小编Jes*_*ica的帖子

无法更改 WebRTC 通话的摄像头/流

来源: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不熟悉,仍然无法使事情正常工作。

更换摄像头后,其他与会者上显示的视频就从视频最后一帧变成了静态图像。

有人可以帮忙指出我的错误吗?提前致谢。

html javascript video socket.io webrtc

1
推荐指数
1
解决办法
2678
查看次数

标签 统计

html ×1

javascript ×1

socket.io ×1

video ×1

webrtc ×1