我正在使用 firebase 存储从我的 Android 应用程序上传音频,然后在我的应用程序中下载和播放。
音频文件已上传,但当我从 firebase 存储播放它时,它采用如下图所示的视频格式,并且不播放音频。
我还将其元数据设置为音频/mp3。
我尝试在 firebase 文档和 google 中搜索相同内容,但无法解决我的问题。
Uri file = Uri.fromFile(new File(fileName));
//filename is audio stored in my phone's local storage.
StorageMetadata metadata = new StorageMetadata.Builder()
.setContentType("audio/mp3")
.build();
// Upload the file and metadata
UploadTask uploadTask = storageReference.child("audio/audio.mp3").putFile(file, metadata);
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
}
}).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
@Override
public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Handle successful uploads on complete
// ...
Task<Uri> uri = taskSnapshot.getStorage().getDownloadUrl();
while(!uri.isComplete());
Uri url = uri.getResult();
Toast.makeText(MainActivity.this, "Upload Success, download URL " +
url.toString(), Toast.LENGTH_LONG).show();
}
});
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
// Continue with the task to get the download URL
return storageReference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
} else {
// Handle failures
// ...
}
}
});
我希望将音频正确保存在 firebase 存储中,然后在我的应用程序中进行流式传输。
任何帮助将不胜感激。
谢谢你!
您的问题可能是由以下原因引起的媒体记录器。我发现输出格式应该设置为AAC。然后浏览器就可以播放了。当我尝试使用 React JS 播放 Android 中 MediaRecorder 捕获的音频时,我遇到了这个问题,我尝试了各种格式(.3gp、.mp4、.wav),但这是唯一有效的格式。我怀疑还有其他人。
So:
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)