1***@qq.com
1***@qq.com
  • 发布:2023-12-12 15:30
  • 更新:2024-07-22 11:10
  • 阅读:514

【报Bug】同样的路径 audio 组件可以播放 ;uni.createInnerAudioContext() 显示 {"errMsg":"MediaError","errCode":-99}

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 3.8.12

手机系统: Android

手机系统版本号: Android 13

手机厂商: 模拟器

手机机型: 小米12pro 天机版

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

//ws返回

    (res) => {  
        console.log(res, '收到消息了====')  
        //使用createInnerAudioContext时候 使用下面代码  
        this.src = uni.arrayBufferToBase64(res)  
        //使用audio组件时候 使用下面代码  
        // this.src = `data:audio/mp3;base64,${uni.arrayBufferToBase64(res)}`;  
    },
playAudio() {  
                if (this.src) {  
                    this.audio= uni.createInnerAudioContext();  
                    let base64Audio = `data:audio/mp3;base64,${this.src}`;  
                    this.audio.src = base64Audio;  
                    this.audio.autoplay = true  
                    this.audio.onPlay(()=>{  
                        console.log('播放了====')  
                    });  
                    this.audio.onError((err) => {  
                        console.log(err, '播放失败了==')  
                    })  
                    this.audio.onEnded(function() {  
                        this.audio.destroy();  
                        console.log('开始播放了==')  
                    });  
                } else {  
                    console.error('No audio URL available');  
                }  
            },

操作步骤:

//ws返回

    (res) => {  
        console.log(res, '收到消息了====')  
        //使用createInnerAudioContext时候 使用下面代码  
        this.src = uni.arrayBufferToBase64(res)  
        //使用audio组件时候 使用下面代码  
        // this.src = `data:audio/mp3;base64,${uni.arrayBufferToBase64(res)}`;  
    },
playAudio() {  
                if (this.src) {  
                    this.audio= uni.createInnerAudioContext();  
                    let base64Audio = `data:audio/mp3;base64,${this.src}`;  
                    this.audio.src = base64Audio;  
                    this.audio.autoplay = true  
                    this.audio.onPlay(()=>{  
                        console.log('播放了====')  
                    });  
                    this.audio.onError((err) => {  
                        console.log(err, '播放失败了==')  
                    })  
                    this.audio.onEnded(function() {  
                        this.audio.destroy();  
                        console.log('开始播放了==')  
                    });  
                } else {  
                    console.error('No audio URL available');  
                }  
            },

预期结果:

//ws返回

    (res) => {  
        console.log(res, '收到消息了====')  
        //使用createInnerAudioContext时候 使用下面代码  
        this.src = uni.arrayBufferToBase64(res)  
        //使用audio组件时候 使用下面代码  
        // this.src = `data:audio/mp3;base64,${uni.arrayBufferToBase64(res)}`;  
    },
playAudio() {  
                if (this.src) {  
                    this.audio= uni.createInnerAudioContext();  
                    let base64Audio = `data:audio/mp3;base64,${this.src}`;  
                    this.audio.src = base64Audio;  
                    this.audio.autoplay = true  
                    this.audio.onPlay(()=>{  
                        console.log('播放了====')  
                    });  
                    this.audio.onError((err) => {  
                        console.log(err, '播放失败了==')  
                    })  
                    this.audio.onEnded(function() {  
                        this.audio.destroy();  
                        console.log('开始播放了==')  
                    });  
                } else {  
                    console.error('No audio URL available');  
                }  
            },

预期 可以播放

实际结果:

播放不了 报错 {"errMsg":"MediaError","errCode":-99}

bug描述:

ws返回的 buffer数据 我转换成base64 然后data:audio/mp3;base64,${this.src}
同样的路径 audio 组件可以播放 ;uni.createInnerAudioContext() 显示 {"errMsg":"MediaError","errCode":-99}

2023-12-12 15:30 负责人:无 分享
已邀请:
IT的绝望

IT的绝望

如果你这个音频文件又短,体积又大,可能是采样率过高了,使用ffmpeg调整转换率到44100即可
ffmpeg.exe -i onChecking.mp3 -ar 44100 onChecking44100.mp3
ffmpeg.exe -i onLongWaiting.mp3 -ar 44100 onLongWaiting44100.mp3
ffmpeg.exe -i onCheckFinish.mp3 -ar 44100 onCheckFinish44100.mp3
ffmpeg.exe -i onConnect.mp3 -ar 44100 onConnect44100.mp3
ffmpeg.exe -i newMsg.mp3 -ar 44100 newMsg44100.mp3

  • DCloud_UNI_OttoJi

    如果你有问题可以参考这个回答。

    如果仍有问题,请提供脱敏后的音频文件用于测试。

    2024-07-22 11:10

1***@qq.com

1***@qq.com (作者)

audio 路径 是src srcs 是我把路径写死测试了一下

  • 1***@qq.com

    作者这个问题解决了吗

    2024-03-02 14:28

DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

如果你有问题可以参考这个回答。

如果仍有问题,请提供脱敏后的音频文件用于测试。

要回复问题请先登录注册