是否可以通过与WebRTC的屏幕共享广播音频

是否可以通过与WebRTC的屏幕共享广播音频,webrtc,screensharing,Webrtc,Screensharing,是否可以通过与WebRTC的屏幕共享广播音频? 使用audio:true简单调用getUserMedia,由于权限被拒绝错误而失败。 是否有任何workeround也可用于广播音频? 除了屏幕共享之外,还会实现音频吗 谢谢。请参阅此演示: 捕获多个流,并将其连接到单个对等连接。好的,音频和色度源:屏幕是“不允许的 更新日期:2016年4月21日 现在,您可以在Firefox和Chrome上使用单个getUserMedia请求捕获音频+屏幕 然而,Chrome仅支持音频+选项卡,即您无法捕获全屏

是否可以通过与WebRTC的屏幕共享广播音频? 使用
audio:true
简单调用
getUserMedia
,由于权限被拒绝错误而失败。 是否有任何workeround也可用于广播音频? 除了屏幕共享之外,还会实现音频吗

谢谢。

请参阅此演示:

捕获多个流,并将其连接到单个对等连接。好的,音频和
色度源:屏幕
是“不允许的


更新日期:2016年4月21日 现在,您可以在Firefox和Chrome上使用单个getUserMedia请求捕获音频+屏幕

然而,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);

在Firefox中,您可以使用getUserMedia在同一请求中获取屏幕共享/etc和麦克风音频,并将其连接到PeerConnection。您可以将其与其他流相结合——Firefox中一个PeerConnection中的多个音频或视频曲目需要Firefox 38或更高版本。目前38是开发者版(以前称为Aurora)。38应该在9周左右发布。

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

 getScreenId(function (error, sourceId, screen_constraints) {
截屏

截至2020年5月 要共享屏幕共享的音频曲目,可以使用
getDisplayMedia
而不是
getUserMedia

这目前仅在中受支持,并且仅在使用“Chrome Tab”共享选项时受支持。您将在对话框中看到
共享音频
的复选标记


在单个对等连接中同时使用音频和chromeMediaSource:screen是否有任何更新/进展?chromeMediaSource:screen、chromeMediaSource:tab和chromeMediaSource:desktop这三种连接尚不支持音频。但可以创建两个并行对等连接,一个用于屏幕共享,另一个用于音频/视频?@Neko,您最多可以创建256个并行对等连接,使用这些对等连接共享的流类型无关紧要。答案是肯定的:5个节点可以共享5个应用程序的屏幕,10个节点只能共享音频;剩下的可以共享音频+视频。这个过程通常被称为“网状网络模型”在多个对等点被启动且所有对等点相互连接的情况下。是否有人可以回答此问题创建webRTC屏幕共享并同时使用getUserMedia会产生奇怪的结果,其中一些音频会被切断,因为音频录制似乎无法正常工作。所以我打算放弃实现一个基于getUserMedia的音频录制器,它在屏幕录制的同时进行录制。您可能需要在Core::Audio/Video Recording和cc:mreavy中的bugzilla中提交一个bug。如果你有一个包含2个或更多音轨的流,那么它将只将第一个音轨流给对等方。如果您想要两者,您需要在通过WebRTC发送之前混合它们。
  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);
  });
});
navigator.mediaDevices.getDisplayMedia({audio: true, video: true})