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

某些iphone手机录音获取流stream延迟问题 以及 录音一次第二次不录音问题

一些型号的iphone手机录音获取流stream延迟问题 以及 录音一次第二次不录音问题

  1. 延迟问题
navigator.mediaDevices.getUserMedia({ audio: true })  .then((stream) => {console.log(stream)
}

从开始到获取stream会有将近2s的延迟 导致按下按钮开始录音 会有前面部分语音没录上 Safari 默认启用了音频回声消除和噪声抑制,这些处理可能会增加延迟。
默认的音频轨道配置可能不适配部分 iOS 设备
修改建议:禁用回声消除和噪声抑制 :通过 getUserMedia 的 audio 约束显式关闭这些
功能。
指定简单的音频轨道配置 。

navigator.mediaDevices.getUserMedia({audio: {echoCancellation: false,noiseSuppression: false,autoGainControl: false,},})  .then((stream) => {console.log(stream)
}
  1. 第二次不录音问题
    获取stream之后
  // 检查 stream 是否有轨道if (stream.getTracks().length === 0) {console.error("流中没有轨道");return;}// 获取音频轨道const audioTrack = stream.getAudioTracks()[0];if (audioTrack) {console.log("音频轨道获取成功,轨道状态为:", audioTrack.readyState);// 保存对音频轨道的引用this.globalAudioTrack = audioTrack;// 监听轨道结束事件audioTrack.onended = () => {console.log("音频轨道结束");// 重新获取音频流// this.requestAudioPermission();// 这里可以根据需要重新获取流或者处理轨道结束的情况};// 如果需要,您可以在这里将流连接到HTML元素// const audioElement = document.querySelector('audio');// audioElement.srcObject = stream;// 确保轨道是启用状态audioTrack.enabled = true;} else {console.error("流中没有音频轨道");}

停止录音后(// 清除对已停止轨道的引用)

    stopAudioTrack() {if (this.globalAudioTrack) {this.globalAudioTrack.stop();this.globalAudioTrack = null; // 清除对已停止轨道的引用} else {console.log("没有可关闭的音频轨道");}},
http://www.lryc.cn/news/511931.html

相关文章:

  • gazebo_world 基本围墙。
  • Ubuntu 上高效实现 Texlive 安装和管理
  • LeetCOde914 卡牌分组
  • MicroDiffusion——采用新的掩码方法和改进的 Transformer 架构,实现了低预算的扩散模型
  • QWT 之 QwtPlotDirectPainter直接绘制
  • 埃斯顿机器人程序案例多个点位使用变量
  • 【数据分析】贝叶斯定理
  • 学AI编程的Prompt工程,marscode
  • python中的与时间相关的模块
  • 【Python运维】构建基于Python的自动化运维平台:用Flask和Celery
  • Qt 12.28 day3
  • Java爬虫获取速卖通(AliExpress)商品详情
  • Learning Multi-Scale Photo Exposure Correction
  • 【Rust自学】7.4. use关键字 Pt.1:use的使用与as关键字
  • C++ 设计模式:门面模式(Facade Pattern)
  • 从0到100:基于Java的大学选修课选课小程序开发笔记(上)
  • 【算法题解】B. President‘s Office - Python实现
  • 【Spring Boot 】详解
  • Redisson 框架详解
  • 正确导入MapStruct并避免与Lombok编译冲突的深入分析
  • K8S 黑魔法之如何从 Pod 拿到节点的命令行
  • 【bluedroid】A2dp Source播放流程源码分析(4)
  • 计算机网络 (9)数据链路层
  • kubernetes学习-集群搭建部署(一)
  • docker commit生成的镜像瘦身
  • 基于Spring Boot的宠物领养系统的设计与实现(代码+数据库+LW)
  • 7.若依参数设置、通知公告、日志管理
  • 基于FISCO BCOS的电子签署系统
  • RocketMQ(二)RocketMQ实战
  • Java重要面试名词整理(十三):RocketMQ