当前位置: 首页 > news >正文

uni.createInnerAudioContext踩坑duration在真机环境一直为0

解决 uni.createInnerAudioContextduration 在真机环境一直为 0 的问题

在使用 uni.createInnerAudioContext 播放音频时,开发者可能会遇到以下问题:

  1. duration 在真机环境中一直为 0:即使音频文件是正常的,duration 属性也无法正确获取音频的时长。
  2. 音频实例未放到全局作用域:导致音频无法暂停、销毁等问题。
  3. 音频播放状态管理混乱:播放和暂停逻辑不一致,可能会出现多次播放或无法停止的问题。

本文将详细分析这些问题的原因,并提供解决方案。


问题 1:duration 在真机环境中一直为 0

原因分析

uni.createInnerAudioContextduration 属性只有在音频文件可以播放时才会被正确赋值。如果音频文件未加载完成或加载失败,duration 将保持为 0。在真机环境中,音频加载速度较慢,可能需要一定时间才能获取到正确的时长。

解决方案

使用 onCanplay 事件监听音频文件是否可以播放,使用onCanplay之前先播放play(),并通过定时器轮询 duration 的值,直到其不为 0。

示例代码
let audio = uni.createInnerAudioContext();
audio.src = "音频文件路径"; // 设置音频文件路径
audio.play(); // 播放音频以便获取时长
audio.volume = 0; // 设置音量为 0,避免播放声音
audio.onCanplay(() => {let intervalID = setInterval(() => {if (audio.duration !== 0) {clearInterval(intervalID); 

相关文章:

  • PostgreSQL 通过 copy 命令导入几何数据 及 通过 CopyManager.copyIn() 导入几何数据
  • PH热榜 | 2025-04-18
  • 视频孪生技术赋能城市内涝灾害智慧化建设
  • 直播人脸美型核心技术详解:卷积神经网络与图像增强在美颜SDK中的应用
  • 什么是爬虫?——从技术原理到现实应用的全面解析
  • STM32F7安全库各版本发布内容的表格化中文总结
  • C++——C++11常用语法总结
  • CentOS 7系统yum报错解决方案(CentOS 7官方EOL问题修复)
  • 使用droidrun库实现AI控制安卓手机
  • Python读取Excel表数据转为JSON格式文件(详细优化版)
  • 软件研发技术团队管理规范
  • 怎么隐藏QTabWidget内的页面
  • 如何校验一个字符串是否是可以正确序列化的JSON字符串呢?
  • 优恩-具备浪涌保护功能的固态继电器UNRD0610-无触点开关器件‌
  • 理解和实现RESTful API的最佳实践
  • ros3d.js中动态改变pointCloud2点云数据的参数
  • vue2.6.12 安装babel 以使用 可选链 ?. 和空值合并 ??
  • 树莓派练习
  • 曲棍球·棒球1号位
  • Linux | I.MX6ULL 内核的编译(13)
  • 老总们带着产品直奔对接会,外贸拓内销找到更多“新路子”
  • 北京一季度GDP为12159.9亿元,同比增长5.5%
  • 王毅、董军将主持召开中印尼外长防长“2+2”对话机制首次部长级会议
  • 近千人认购!上海一新盘认购数创今年新高,3月份7个项目开盘“日光”
  • 何立峰会见美国英伟达公司总裁黄仁勋:欢迎美资企业深耕中国市场
  • 英国称担忧中国无人机拍摄英国重要基建高清图像,外交部回应