uni-app 音频播放及计算时间和播放进度

本文介绍了如何使用uniapp创建音频实例,实现音频文件的加载、播放、暂停、进度更新以及错误处理。通过`uni.createInnerAudioContext`操作,开发者可以获取音频时长、计算播放进度,并处理播放结束和错误情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图如下:
在这里插入图片描述

组件地址:组件地址
代码:

onLoad(options) {
    var that = this
    //创建音频实例
    that.innerAudioContext = uni.createInnerAudioContext();
    //音频地址(模拟)
    that.innerAudioContext.src = 'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3';
//   ..音频可以播放 取音频时常并计算
  that.innerAudioContext.onCanplay(()=>{
    var time = that.innerAudioContext.duration.toFixed(0)
    var min = Math.floor(time/60)
    var second = time%60
     that.duration = (min>10?min:'0'+min)+':'+(second>10?second:'0'+second)
      console.log('可以播放了',that.duration)
  })
  //监听播放时间 及 计算播放进度
  that.innerAudioContext.onTimeUpdate (() =>{
  //播放时间
      var time = that.innerAudioContext.currentTime.toFixed(0)
      var min = Math.floor(time/60)
      var second = time%60
     that.time = (min>=10?min:'0'+min)+':'+(second>=10?second:'0'+second)
     //计算进度
     that.playJd = ((time/that.innerAudioContext.duration).toFixed(2))*100
      console.log('播放进度',that.innerAudioContext.currentTime,)
  })
    // 继续播放seek完成
  that.innerAudioContext.onSeeked(()=>{
      console.log('ed')
      that.innerAudioContext.play()
       that.videoPause = 2
  })
  //自然播放结束
  that.innerAudioContext.onEnded(()=>{
      that.videoPause = 3
  }),
  //音频错误
  that.innerAudioContext.onError((res) => {
    uni.showToast({
        title: res.errMsg,
        icon: 'none',
        mask: true
    })
    console.log(res.errMsg);
    console.log(res.errCode);
  });
},

方法集合:

//播放
playVideo () {
       console.log('跳转',this.seekTime)
        this.innerAudioContext.play()
        //动态显示播放暂停再次播放按钮
        this.videoPause = 2
   },
   //暂停(不是停止)
   stopVideo () {
    //    在停止播放之前记录播放进度
       this.seekTime = Number(this.innerAudioContext.currentTime.toFixed(0))
       this.innerAudioContext.pause()
       this.videoPause = 1
   },
   //再次播放
   alignPlay () {
    //   this.innerAudioContext.seek(0)
      this.innerAudioContext.play()
      this.videoPause = 2
   },
uni-app 是一种基于 Vue.js 的跨平台应用框架,它能够帮助开发者通过编写一次代码即可发布到包括微信小程序、支付宝小程序、百度智能云等在内的多种移动平台上。uni-app 的H5播放器组件允许开发者轻松地在应用程序中嵌入音频或视频播放功能。 ### uni-app H5 播放器的基本组成部分: 1. **音频组件**: 支持基本的音量调节、暂停、继续播放、上一首、下一首等功能,并提供API供自定义播放行为。 2. **视频组件**: 提供了播放、暂停、全屏显示、上下左右滑动控制进度等功能。支持多种视频格式,如 MP4 等,并且可以添加字幕文件。 3. **音频视频控制界面**: 自带简洁美观的播放控件设计,也可以通过配置选项定制播放器外观。 4. **事件处理**: 提供了一系列事件回调机制,便于监听用户操作,如播放完成、暂停、错误发生等。 ### 使用步骤: 1. **安装 uni-app**:首先需要下载并安装 uni-app 开发环境及配套工具。 2. **引入播放器组件**: 在项目中引入所需的音频或视频播放器组件。通常 uni-app 已内置这些组件,只需按需导入即可。 3. **创建播放器实例**: 初始化播放器,指定播放资源、是否自动播放、初始音量等参数。 4. **集成到页面中**: 将播放器组件插入到需要展示音乐或视频的页面模板中。 5. **处理用户交互**: 配置事件监听函数,以便对用户的点击、拖拽、触控等操作做出响应。 6. **调试与优化**: 测试播放器的各项功能,检查性能兼容性,针对不同设备进行适配调整。 ### 相关问题: 1. 如何在uni-app中自定义H5播放器的样式? 2. uni-app H5播放器如何处理流式音频/视频数据? 3. 当在不同环境下运行应用时,uni-app H5播放器会遇到哪些常见的兼容性问题?
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值