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

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

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

从开始到获取stream会有将近2s的延迟 导致按下按钮开始录音 会有前面部分语音没录上 Safari 默认启用了音频回声消除和噪声抑制,这些处理可能会增加延迟。

默认的音频轨道配置可能不适配部分 iOS 设备

修改建议:禁用回声消除和噪声抑制 :通过 getUserMedia 的 audio 约束显式关闭这些

功能。

指定简单的音频轨道配置 。

javascript 复制代码
navigator.mediaDevices.getUserMedia({
        audio: {
          echoCancellation: false,
          noiseSuppression: false,
          autoGainControl: false,
        },
      })  .then((stream) => {
	 console.log(stream)
})
  1. 第二次不录音问题
    获取stream之后
javascript 复制代码
  // 检查 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("流中没有音频轨道");
          }

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

javascript 复制代码
    stopAudioTrack() {
      if (this.globalAudioTrack) {
        this.globalAudioTrack.stop();
        this.globalAudioTrack = null; // 清除对已停止轨道的引用
      } else {
        console.log("没有可关闭的音频轨道");
      }
    },
相关推荐
百万蹄蹄向前冲5 小时前
风扇转了一晚上MVP专家团翻车事故
前端·人工智能
默_笙5 小时前
🏛 给 AI 配一间办公室:Harness Engineering 六大模块与它的实现
前端·javascript
linux_cfan7 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
kyriewen7 小时前
我扒了 10,221 条 JD:腾讯技术岗 75% 在要 AI
前端·人工智能·ai编程
郑州光合科技余经理8 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
+VX:Fegn08958 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
雪芽蓝域zzs8 小时前
第 7 章:双 Y 轴组合图(柱状 + 折线,看板高频场景)
vue.js·echars
IT_陈寒9 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
一 乐9 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
Blanche15009 小时前
利用 RAG 为答疑机器人扩展知识范围
前端