是否可以使用WebRTC进行屏幕共享广播音频?
使用getUserMedia
进行简单调用audio: true
会因权限被拒绝而失败。
有没有可以用来播放音频的工作人员?
是否会在屏幕共享旁边实施音频?
感谢。
答案 0 :(得分:10)
请参阅此演示:Share screen and audio/video from single peer connection!
捕获多个流并将其附加到单个对等连接。 AFAIK,音频以及chromeMediaSource:screen
是" still" 不允许。
现在,您可以在Firefox和Chrome上使用单个getUserMedia请求捕获音频+屏幕。
但Chrome只支持音频+标签,即您无法捕获全屏和音频。
音频+标签表示任何Chrome标签以及麦克风。
您可以通过发出两个并行(UNIQUE)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);
答案 1 :(得分:5)
要共享屏幕共享的音轨,可以使用getDisplayMedia
代替getUserMedia
。 Docs。
navigator.mediaDevices.getDisplayMedia({audio: true, video: true})
当前仅在Chrome / Edge中支持此功能,并且仅在使用“ Chrome标签”共享选项时才支持。您会在对话框中看到Share audio
的复选标记。
答案 2 :(得分:2)
在Firefox中,您可以使用getUserMedia在同一请求中获取屏幕共享/ etc和mic音频,并可以将其附加到PeerConnection。您可以将其与其他流组合 - Firefox中单个PeerConnection中的多个音频或视频轨道需要Firefox 38或更高版本。目前38是Developer Edition(以前称为Aurora)。 38应该在大约9周左右发布。
答案 3 :(得分:2)
是的,您可以通过两个请求在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);
});
});