uni-app createInnerAudioContext BUG提交

uni-app createInnerAudioContext BUG提交

开发环境 版本号 项目创建方式
Windows 14.6.1 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:4.36

手机系统:Android

手机系统版本号:Android 10

手机机型:杂牌PAD

页面类型:vue

vue版本:vue3

打包方式:云端

项目创建方式:HBuilderX

示例代码:

<template>
<view class="">
<video :src="src" controls @error="videoErrorCallback"></video>
</view>
</template> 
<script>
export default {
data() {
return {
src: ''
};
},
onReady: function(res) {
this.videoContext = uni.createVideoContext('myVideo')
const innerAudioContext = uni.createInnerAudioContext();
plus.android.requestPermissions(
["android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"],
(result) => {
// this.src = plus.io.convertLocalFileSystemURL('/storage/76FB-CFA0/1.mp3')
// this.videoContext.requestFullScreen();
// this.videoContext.play();
innerAudioContext.autoplay = true;
innerAudioContext.src = plus.io.convertLocalFileSystemURL(`/storage/76FB-CFA0/1.mp3`);
innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
}, 
(error) => {
uni.showModal({
content: error
})
console.error("请求权限失败", error);
}
);
}
};
</script>

操作步骤:

<template>
<view class="">
<video :src="src" controls @error="videoErrorCallback"></video>
</view>
</template> 
<script>
export default {
data() {
return {
src: ''
};
},
onReady: function(res) {
this.videoContext = uni.createVideoContext('myVideo')
const innerAudioContext = uni.createInnerAudioContext();
plus.android.requestPermissions(
["android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"],
(result) => {
// this.src = plus.io.convertLocalFileSystemURL('/storage/76FB-CFA0/1.mp3')
// this.videoContext.requestFullScreen();
// this.videoContext.play();
innerAudioContext.autoplay = true;
innerAudioContext.src = plus.io.convertLocalFileSystemURL(`/storage/76FB-CFA0/1.mp3`);
innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
},
(error) => {
uni.showModal({
content: error
})
console.error("请求权限失败", error);
}
);
},
onLoad() {

},
methods: {}
};
</script>

预期结果:

应该直接能播放

实际结果:

10:42:08.554 正在同步手机端程序文件… 10:42:09.234 同步手机端程序文件完成 10:42:14.217 MediaError at pages/index/index.vue:27 10:42:14.258 [Number] -5 at pages/index/index.vue:28

bug描述:

createInnerAudioContext 无法播放本地音频

用createVideoContext去尝试播放此音频,可以播放呢


更多关于uni-app createInnerAudioContext BUG提交的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复


this.audioPlayerSrc = plus.io.convertLocalFileSystemURL(’/storage/76FB-CFA0/1.mp3’);
audio标签能正常播放呢

更多关于uni-app createInnerAudioContext BUG提交的实战教程也可以访问 https://www.itying.com/category-93-b0.html


针对您提到的 uni-app createInnerAudioContext 可能存在的BUG,我可以提供一些可能的代码示例和调试思路,以帮助您更好地理解和定位问题。由于我无法直接复现或验证具体的BUG,以下内容主要基于常见的使用场景和潜在问题。

代码示例

首先,确保您正确使用了 createInnerAudioContext 方法。以下是一个基本的示例:

// 在页面的 onLoad 或其他生命周期函数中初始化
onLoad() {
    const innerAudioContext = uni.createInnerAudioContext();
    innerAudioContext.src = 'https://example.com/audio.mp3';
    innerAudioContext.play();

    // 监听播放状态
    innerAudioContext.onPlay(() => {
        console.log('音频开始播放');
    });

    // 监听播放结束
    innerAudioContext.onEnded(() => {
        console.log('音频播放结束');
    });

    // 停止播放
    innerAudioContext.stop(); // 这行代码仅用于演示,实际中根据需要调用
}

调试思路

  1. 检查音频URL: 确保音频URL是有效的,并且可以在浏览器中直接访问。

  2. 权限问题: 如果是在小程序或App中运行,确保已经获得了相应的音频播放权限。

  3. 异步处理: 如果音频的URL是异步获取的,确保在URL确定后再设置给 innerAudioContext.src

  4. 错误处理: 监听错误事件以获取更多错误信息:

    innerAudioContext.onError((err) => {
        console.error('音频播放错误', err);
    });
    
  5. 平台差异uni-app 支持多平台,不同平台(如H5、小程序、App)在音频处理上可能有差异。检查平台文档,确保代码兼容。

  6. 版本更新: 检查 uni-app 和相关依赖库的版本,确保使用的是最新版本,因为新版本可能已经修复了已知的BUG。

  7. 日志输出: 在关键代码路径添加日志输出,以便追踪执行流程和变量状态。

总结

由于BUG的具体情况未知,上述内容主要是基于常见问题和最佳实践的建议。如果问题依旧存在,建议查阅 uni-app 的官方文档或社区论坛,看看是否有其他开发者遇到并解决了类似的问题。同时,也可以考虑向 uni-app 的官方支持团队提交详细的BUG报告,包括复现步骤、预期结果和实际结果等。

回到顶部