是否可以在WebRTC中使用屏幕共享广播音频?
仅使用audio:true
调用getUserMedia
会导致权限被拒绝的错误。
是否有任何可用于广播音频的解决方法?
屏幕共享旁边会实现音频吗?
谢谢。
是否可以在WebRTC中使用屏幕共享广播音频?
仅使用audio:true
调用getUserMedia
会导致权限被拒绝的错误。
是否有任何可用于广播音频的解决方法?
屏幕共享旁边会实现音频吗?
谢谢。
请参考此演示: 分享屏幕和音频/视频来自单个对等连接!
多个流被捕获并附加到单个对等连接上。据我所知,使用chromeMediaSource:screen
的音频 "仍然" 不被允许。
现在你可以在Firefox和Chrome上使用单个getUserMedia请求捕获音频+屏幕。
然而,Chrome仅支持音频+标签页,即您无法同时捕获全屏和音频。
音频+标签页意味着任何带有麦克风的Chrome标签页。
您可以通过进行两个并行(唯一)的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);
为了共享屏幕共享的音频轨道,您可以使用getDisplayMedia
而不是getUserMedia
。文档。
navigator.mediaDevices.getDisplayMedia({audio: true, video: true})
目前仅在Chrome / Edge中支持,并且仅在使用“Chrome标签页”共享选项时才支持。您将在对话框中看到共享音频
的复选标记。
您可以通过两个请求在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);
});
});
desktoPCapture
,2)tabCapture
。另一方面,getDisplayMedia
目前还不支持扬声器捕获。也就是说,使用getDisplayMedia只能捕获屏幕,而不能捕获系统的音频。我建议您暂时使用desktopCapture PAI,直到getDisplayMedia具备音频支持功能。 - Muaz Khan