菜菜2
菜菜2
  • 发布:2025-01-11 19:10
  • 更新:2025-01-13 11:56
  • 阅读:63

【报Bug】uni.createInnerAudioContext() 播放结束,没有触发onEnded

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: Apple M2;MacOS 14.5 (23F79)

HBuilderX类型: 正式

HBuilderX版本号: 4.36

手机系统: Android

手机系统版本号: Android 13

手机厂商: OPPO

手机机型: OnePlus 8/安卓平板

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

const AIAudioContext = uni.createInnerAudioContext();
AIAudioContext.src = url; // 设置本地音频路径
AIAudioContext.play();

  AIAudioContext.onEnded = () => {  
    console.log('播放结束onEnded')  
    onEnd();  
  };

操作步骤:

1、播放一个音频
2、音频播放结束
3、没有触发 onEnded

预期结果:

1、音频播放结束触发onEnded,或者有其他事件可以判断音频播放结束?

实际结果:

1、音频播放结束完全没有触发onEnded

bug描述:

1、uni.createInnerAudioContext() 播放结束,没有触发onEnded
2、为什么不会触发,那我怎么去监听音频播放结束,开始下一个音频播放?

2025-01-11 19:10 负责人:无 分享
已邀请:
DCloud_UNI_OttoJi

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

你好,我使用下面的代码,使用 HBuilderX alpha 4.45, vue3,安卓 15,小米 13 运行正常,可以正确触发 play/seek/end,音频长度 175s,你可以基于我提供的代码指出如何修改和复现。

<template>  
    <view>  
        <button @click="onPlay">play</button>  
    </view>  
</template>  

<script>  
    export default {  

        onLoad() {  
            const auctx = uni.createInnerAudioContext()  
            this.auCtx = auctx  
            auctx.src = 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3'  

            auctx.onPlay(() => {  
              console.log('开始播放');  
            });  
            auctx.onError((res) => {  
                console.log('on error');  
              console.log(res.errMsg);  
              console.log(res.errCode);  
            });  
            auctx.onEnded((e)=>{  
                console.log('onend',e);  
            })  

            auctx.onSeeking(e=>{  
                console.log('on seeking',e);  
            })  

            auctx.onSeeked(e=>{  
                console.log('on onSeeked',e);  
            })  
        },  
        methods:{  
            onPlay(){  
                this.auCtx.play()  
                setTimeout(()=>{  
                    this.auCtx.seek(170)  
                },1000)  
            }  
        }  
    }  
</script>  
  • 菜菜2 (作者)

    seek的触发不包括 拖动进度条吗

    2025-01-13 14:00

  • DCloud_UNI_OttoJi

    回复 菜菜2: 没理解,这是纯 js 播放和拖动,没有 ui 页面怎么拖动?我 seek 是为了快点让音频播放结束,早点触发 onEnd

    2025-01-13 20:39

  • DCloud_UNI_OttoJi

    我 seek 170 秒是为了快速到播放的最后几秒,你根据我这个改改

    2025-01-13 20:40

  • 菜菜2 (作者)

    回复 DCloud_UNI_OttoJi: 抱歉,我问错问题了,这个音频播放结束能正常触发 onEnded 了

    2025-01-16 17:32

要回复问题请先登录注册