javascript - 我捕获屏幕时的webrtc速度问题
问题描述
我正在开发一个 4 peer webrtc 视频聊天!此时一切都很好,所以我在网站上添加了一个屏幕共享的未来!
当我按屏幕共享时,连接变得如此缓慢!我认为这是因为 4 对等连接,但这仅在我共享我的屏幕时才会发生。我尝试使用发送相机流的 RemoveStream 函数,但流仍然滞后。这是我按下屏幕共享按钮后运行的功能
async function startCapture() {
var audioStream = await navigator.mediaDevices.getUserMedia({audio:true});
var audioTrack = audioStream.getAudioTracks()[0];
let captureStream = null;
try {
captureStream = await navigator.mediaDevices.getDisplayMedia(gdmOptions);
captureStream.addTrack( audioTrack );
} catch(err) {
console.error("Error: " + err);
}
// return captureStream;
if(rtcPeerConn){
rtcPeerConn.removeStream(myStream);
rtcPeerConn.addStream(captureStream);
}
if(rtcPeerConn1){
rtcPeerConn1.removeStream(myStream);
rtcPeerConn1.addStream(captureStream);
}
if(rtcPeerConn2){
rtcPeerConn2.removeStream(myStream);
rtcPeerConn2.addStream(captureStream);
}
if(rtcPeerConn3){
rtcPeerConn3.removeStream(myStream);
rtcPeerConn3.addStream(captureStream);
}
myStream.getTracks().forEach(function(track) {
track.stop();
});
myStream = captureStream;
success(myStream);
}
我什至试图像这样从第一个流中删除曲目
async function startCapture() {
myStream.getTracks().forEach(function(track) {
track.stop();
});
var audioStream = await navigator.mediaDevices.getUserMedia({audio:true});
var audioTrack = audioStream.getAudioTracks()[0];
let captureStream = null;
try {
captureStream = await navigator.mediaDevices.getDisplayMedia(gdmOptions);
captureStream.addTrack( audioTrack );
} catch(err) {
console.error("Error: " + err);
}
if(rtcPeerConn){
rtcPeerConn.removeStream(myStream);
rtcPeerConn.addStream(captureStream);
}
if(rtcPeerConn1){
rtcPeerConn1.removeStream(myStream);
rtcPeerConn1.addStream(captureStream);
}
if(rtcPeerConn2){
rtcPeerConn2.removeStream(myStream);
rtcPeerConn2.addStream(captureStream);
}
if(rtcPeerConn3){
rtcPeerConn3.removeStream(myStream);
rtcPeerConn3.addStream(captureStream);
}
myStream = captureStream;
success(myStream);
}
如您所见,我使用 removeStream 函数来避免发送无用的流,但仍然没有任何改变。
解决方案
你有什么限制getDisplayMedia
?也许您正在发送“太多”的视频内容,从而减慢了一切速度。
[编辑]
根据您的评论,您正在录制来自屏幕的音频,以及来自麦克风的音频。也许从屏幕录制中删除音轨?
您还可以使用选项来减小视频的大小:(这需要使用getUserMedia
而不是getDisplayMedia
)
video:{
width: { min: 100, ideal: width, max: 1920 },
height: { min: 100, ideal: height, max: 1080 },
frameRate: {ideal: framerate}
}
也许帧率较低?尝试减小尺寸,看看是否也有帮助:)
推荐阅读
- sql-server - 使用链接的 SQL Server 表上的参数访问查询 Like 运算符
- javascript - React 将文件中的所有 scss 规则导入组件
- javascript - Underscore.js :迭代 json 对象并使用 _.has() 检查密钥可用性
- javascript - Firefox 上的 JavaScript MIME 类型警告
- windows - 源 kafka 连接不使用时间戳模式发布
- c# - 使用结构映射的方面定向日志记录/拦截
- javascript - 强制异步 node.js 导致天蓝色
- docker - 保护 Docker 守护进程
- python - ascii 编解码器无法解码位置 11 中的字节 0x96:序数不在范围内(128)
- javascript - 更改后如何更新和保存变量?