来源:https ://github.com/anoek/webrtc-group-chat-example/blob/master/client.html
我正在尝试修改此 Webrtc 示例以添加更改相机的功能(跨浏览器支持)。
正常使用完美,更换相机后,重新协商失败。
1) 获取设备列表navigator.mediaDevices.enumerateDevices()
2)获取新流后更改local_media_stream
local_media_stream.getTracks().forEach(function(track) {
track.stop();
});
local_media_stream = stream;
Run Code Online (Sandbox Code Playgroud)
3)触发重协商功能(摘自源码第132行)
function renegotiate(){
console.log("Creating RTC offer to ", peer_id);
peer_connection.createOffer(
function (local_description) {
console.log("Local offer description is: ", local_description);
peer_connection.setLocalDescription(local_description,
function() {
signaling_socket.emit('relaySessionDescription',
{'peer_id': peer_id, 'session_description': local_description});
console.log("Offer setLocalDescription succeeded");
},
function() { Alert("Offer setLocalDescription failed!"); }
);
},
function (error) {
console.log("Error sending offer: ", error);
});
};
Run Code Online (Sandbox Code Playgroud)
我相信我的方法是错误的,但我尝试了在谷歌上找到的许多不同方法来编辑重新协商的代码,但是我对WebRTC和Socket.io不熟悉,仍然无法使事情正常工作。
更换摄像头后,其他与会者上显示的视频就从视频最后一帧变成了静态图像。
有人可以帮忙指出我的错误吗?提前致谢。