无法播放Android应用发送的Firebase存储中的音频 [英] Unable to play audio in firebase storage sent from android app

查看:134
本文介绍了无法播放Android应用发送的Firebase存储中的音频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Firebase存储从我的Android应用上传音频,然后下载并在我的应用中播放. 音频文件已上传,但是当我从Firebase存储播放时,它具有以下图像的视频格式,并且无法播放音频. 我还将它的元数据设置为音频/mp3.

I am using firebase storage to upload audio from my android app and then download and play in my app. The audio file gets uploaded but when I play it from firebase storage,it comes in a video format like image below and does not play the audio. I am also setting metadata as audio/mp3 for it.

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

I tried to search about the same in firebase documentation and google but could not get my issue resolved.

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存储中,然后将其流式传输到我的应用中. 任何帮助将不胜感激. 谢谢!

I want the audio to be saved properly in firebase storage and then stream it in my app. Any help will be appreciated. Thank you!

推荐答案

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

Your problem could have been caused by MediaRecorder. I have figured out that the output format should be set to AAC. Then the browser will be able to play it. I experienced this problem when I was trying to use React JS to play audio captured by MediaRecorder in Android, and I tried various formats (.3gp, .mp4, .wav), but this is the only one that worked. I suspect there are other ones, too.

所以:

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

这篇关于无法播放Android应用发送的Firebase存储中的音频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆