webrtc的问题
直接上代码吧,第一次写这个东西,我已经被绕晕了。
需求很简单,就是一个类似直播的需求。连接人数为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...
希望有做过经验的大佬帮我整理整理。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论