无法在firebase存储中播放从android应用程序发送的音频

无法在firebase存储中播放从android应用程序发送的音频,android,firebase,audio,firebase-storage,Android,Firebase,Audio,Firebase Storage,我正在使用firebase存储从我的android应用程序上传音频,然后下载并在我的应用程序中播放。 音频文件被上传,但当我从firebase存储播放时,它以视频格式出现,如下图所示,不会播放音频。 我还将元数据设置为音频/mp3 我试图在firebase文档和google中搜索相同的内容,但无法解决我的问题 urifile=Uri.fromFile(新文件(文件名)); //文件名是存储在手机本地存储器中的音频。 StorageMetadata=新建StorageMetadata.Build

我正在使用firebase存储从我的android应用程序上传音频,然后下载并在我的应用程序中播放。 音频文件被上传,但当我从firebase存储播放时,它以视频格式出现,如下图所示,不会播放音频。 我还将元数据设置为音频/mp3

我试图在firebase文档和google中搜索相同的内容,但无法解决我的问题

urifile=Uri.fromFile(新文件(文件名));
//文件名是存储在手机本地存储器中的音频。
StorageMetadata=新建StorageMetadata.Builder()
.setContentType(“音频/mp3”)
.build();
//上传文件和元数据
UploadTask UploadTask=storageReference.child(“audio/audio.mp3”).putFile(文件,元数据);
uploadTask.addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(UploadTask.TaskSnapshot TaskSnapshot){
双进度=(100.0*taskSnapshot.GetByTestTransferred())/taskSnapshot.getTotalByteCount();
}
}).addOnPausedListener(新的OnPausedListener(){
@凌驾
public void onPaused(UploadTask.TaskSnapshot TaskSnapshot){
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理不成功的上传
}
}).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//处理完成后的成功上载
// ...
任务uri=taskSnapshot.getStorage().getDownloadUrl();
而(!uri.isComplete());
Uri url=Uri.getResult();
Toast.makeText(MainActivity.this,“上传成功,下载URL”+
url.toString(),Toast.LENGTH_LONG).show();
}
});
Task urlTask=uploadTask.continueWithTask(新的Continuation(){
@凌驾
公共任务(@NonNull Task Task)引发异常{
如果(!task.issusccessful()){
抛出task.getException();
}
//继续执行任务以获取下载URL
返回storageReference.getDownloadUrl();
}
}).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Uri downloadUri=task.getResult();
}否则{
//处理故障
// ...
}
}
});
我希望音频正确保存在firebase存储中,然后在我的应用程序中进行流式传输。 任何帮助都将不胜感激。 谢谢大家!

像这样试试


metadata = new StorageMetadata.Builder()
        .setContentType("audio/mpeg")
        .build();

uploadTask = storageRef.child("audio/"+file.getLastPathSegment()).putFile(file,metadata);

您的问题可能是由MediaRecorder引起的。我已经计算出输出格式应该设置为AAC。然后浏览器将能够播放它。我在尝试使用React JS播放Android中MediaRecorder捕获的音频时遇到了这个问题,我尝试了各种格式(.3gp、.mp4、.wav),但这是唯一有效的格式。我怀疑还有其他的

因此:


我尝试了上面的代码,但问题仍然是一样的。

metadata = new StorageMetadata.Builder()
        .setContentType("audio/mpeg")
        .build();

uploadTask = storageRef.child("audio/"+file.getLastPathSegment()).putFile(file,metadata);
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);