账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    webrtc的问题
    50
    0

    直接上代码吧,第一次写这个东西,我已经被绕晕了。
    需求很简单,就是一个类似直播的需求。连接人数为1时,播放本地视频;>1时播放socket推送过来的视频。

    // 客户端
    // 第一次连接 node 启动的socket会返回一个连接人数
    // 用连接人数来判断是展示自己的 video 还是远程的 video 信息
    ws.addEventListener('message', function (msg) {
        users = msg.data
        if (users <= 1) {
            //
            navigator.mediaDevices.getUserMedia({
                video: {width: 400, height: 300},
                audio: false
            })
                .then(function (stream) {
                    v.src = window.URL.createObjectURL(stream);
                })
                .catch(function (err) {
                    console.log(err.name + ": " + err.message);
                });
    
            pc.createOffer({offerToReceiveAudio: 1}).then(function (e) {
    
                // pc1 setLocalDescription
                pc.setLocalDescription(e).then(
                    function () {
                        // 将本地信息通过socket传送给后台
                        ws.send(JSON.stringify({
                            type: 'set_media_stream',
                            payload: e
                        }))
                    },
                    function () {
                        console.log('pc1 setLocalDescription error')
                    }
                )
            });
        } else {
            // 当前连接人数 > 1
            ws.send(JSON.stringify({
                type: 'send_me_media',
                payload: ''
            }));
            pc.setRemoteDescription(JSON.parse(msg.data)).then(
                function (res) {
                    console.log(res, 'pc setRemoteDescription success')
                },
                function (err) {
                    console.log(err + 'pc setRemoteDescription error')
                }
            );
    
            // 应答
            // 从这里往后就不会写了
            pc.createAnswer().then(
                function () {
                    pc2.setLocalDescription(e).then(
                        function () {
                            console.log('pc2 setLocalDescription success')
                        },
                        function () {
                            console.log('pc2 setLocalDescription error')
                        }
                    );
                    pc1.setRemoteDescription(e).then(
                        function () {
                            console.log('pc1 setRemoteDescription success')
                        },
                        function () {
                            console.log('pc1 setRemoteDescription error')
                        }
                    );
                },
                function () {
                    console.log('pc2 createAnswer error')
                }
            );
    
        }
    
    
    })

    第一次写这种功能,脑子里面一点思路都没有,只是参考了这篇文章http://blog.csdn.net/xyblog/a...
    希望有做过经验的大佬帮我整理整理。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 漫漫爱 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部