13

是否可以通过 WebRTC 的屏幕共享来广播音频?简单调用因权限被拒绝错误getUserMedia而失败。audio: true是否有任何解决方法也可用于广播音频?将在屏幕共享旁边实现音频吗?

谢谢。

4

4 回答 4

19

请参阅此演示:从单个对等连接共享屏幕和音频/视频!

捕获多个流并将其附加到单个对等连接。AFAIK,音频chromeMediaSource:screen仍然”是不允许的。


更新于 2016 年 4 月 21 日

现在,您可以在 Firefox 和 Chrome 上使用单个 getUserMedia 请求来捕获音频+屏幕。

然而 Chrome 仅支持音频+标签,即您不能与音频一起捕获全屏。

Audio+Tab 表示任何 chrome 选项卡以及麦克风。


更新于 2017 年 1 月 9 日

您可以通过发出两个并行(唯一)getUserMedia 请求来捕获音频和屏幕流。

现在您可以使用addTrack方法将音轨添加到屏幕流中:

var audioStream = captureUsingGetUserMedia();
var screenStream = captureUsingGetUserMedia();

var audioTrack = audioStream.getAudioTracks()[0];

// add audio tracks into screen stream
screenStream.addTrack( audioTrack );

现在screenStream有音频和视频轨道。

nativeRTCPeerConnection.addStream( screenStream );
nativeRTCPeerConnection.createOffer(success, failure, options);
于 2013-11-19T04:26:35.107 回答
11

截至 2020 年 5 月

要共享屏幕共享的音轨,您可以使用getDisplayMedia而不是getUserMedia. 文档

navigator.mediaDevices.getDisplayMedia({audio: true, video: true})

这目前仅在Chrome / Edge中受支持,并且仅在使用“Chrome Tab”共享选项时受支持。您将Share audio在对话框中看到一个复选标记。

在此处输入图像描述

于 2020-05-20T02:27:52.473 回答
3

在 Firefox 中,您可以使用 getUserMedia 在同一请求中获取屏幕共享/等和麦克风音频,并将其附加到 PeerConnection。您可以将它与其他流结合起来——Firefox 中单个 PeerConnection 中的多个音频或视频轨道需要 Firefox 38 或更高版本。目前 38 是 Developer Edition(以前称为 Aurora)。38 应该会在大约 9 周左右发布。

于 2015-03-13T01:06:56.827 回答
3

是的,您可以通过两个请求在 chrome 上录制音频和屏幕录制。

 getScreenId(function (error, sourceId, screen_constraints) {

截屏

  navigator.getUserMedia = navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
  navigator.getUserMedia(screen_constraints, function (stream) {
    navigator.getUserMedia({audio: true}, function (audioStream) {
      stream.addTrack(audioStream.getAudioTracks()[0]);
      var mediaRecorder = new MediaStreamRecorder(stream);
      mediaRecorder.mimeType = 'video/mp4'
      mediaRecorder.stream = stream;

      document.querySelector('video').src = URL.createObjectURL(stream);
      var video =  document.getElementById('screen-video')
      if (video) {
        video.src = URL.createObjectURL(stream);
        video.width = 360;
        video.height = 300;
      }
    }, function (error) {
      alert(error);
    });
  }, function (error) {
    alert(error);
  });
});
于 2016-11-19T06:41:59.940 回答