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