当前位置: 首页 > 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); 
http://www.dtcms.com/a/141998.html

相关文章:

  • 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)
  • LINUX学习——守护进程的含义及编程实现
  • KaliARP 攻击工具配置——简单局域网断网攻击
  • C言雅韵集:野指针
  • 团体程序设计天梯赛PTA-SHU冲刺赛4. L22-L32
  • 【AI学习】OpenAI:《A practical guide to building agents》(中文介绍与原文)
  • 无锡透平叶片将携尖端叶片登陆2025涡轮展,5月苏州相见
  • 《软件设计师》复习笔记(11.5)——测试原则、阶段、测试用例设计、调试
  • Linux文件类型
  • Day3-UFS深入学习路线
  • MAC-如果是分页查询,怎么分批次in;基于多线程的分页查询工具类