You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome插件使用getUserMedia录屏无音频问题求助

Chrome插件录屏音频捕获问题修复方案

1. 确认插件权限配置

在manifest.json中必须声明以下权限,否则无法捕获系统/标签页音频:

{
  "permissions": ["desktopCapture", "audioCapture", "activeTab"]
}

2. 修正getUserMedia约束参数

旧代码中使用的mandatory语法已被废弃,且音频约束缺少关键配置,替换为标准约束写法:

chrome.desktopCapture.chooseDesktopMedia(
  ['screen', 'window'],
  function (streamId) {
    if (!streamId) return;

    navigator.mediaDevices.getUserMedia({
      audio: {
        mediaSource: 'desktop',
        chromeMediaSourceId: streamId,
        echoCancellation: false,
        noiseSuppression: false,
        autoGainControl: false
      },
      video: {
        mediaSource: 'desktop',
        chromeMediaSourceId: streamId
      }
    }).then(stream => {
      // 检查是否成功获取音频轨道,用于定位问题
      console.log('音频轨道:', stream.getAudioTracks());
      
      // 指定支持音视频的MIME类型,避免编码不兼容导致音频丢失
      const mediaRecorder = new MediaRecorder(stream, {
        mimeType: 'video/webm; codecs=vp9,opus'
      });

      mediaRecorder.ondataavailable = function(e) {
        if (e.data.size > 0 && socket.readyState === WebSocket.OPEN) {
          // 处理数据块逻辑
        }
      };

      mediaRecorder.onstop = function(e) {
        stream.getTracks().forEach(track => track.stop());
      };

      mediaRecorder.start(1000);
      
    }).finally(async () => {
      await chrome.tabs.update(message.body.currentTab.id, { active: true });
    });
  }
);

3. 关键注意事项

  • 确保用户在选择捕获源时,Chrome弹窗中勾选了音频选项(部分系统/Chrome版本会单独询问音频权限)
  • 若仅需捕获单个标签页音频,可将['screen', 'window']替换为['tab'],专门针对标签页捕获音视频
  • 测试时打开Chrome开发者工具的Media面板,查看流中是否包含音频轨道,快速定位问题环节

内容的提问来源于stack exchange,提问作者Random Code Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:04:59