webrtc实现局域网网页视频聊天

本文介绍了如何借助WebRTC技术在局域网内实现两台设备间的网页视频聊天。通过分析WebRTC的原理,重点讨论了在获取并交换SDP和ICE候选信息的过程中,如何处理异步函数的问题。同时,由于WebRTC需要在安全环境下运行,文中提到了使用Nginx反向代理解决HTTPS和socket.io的兼容问题。经过三个星期的努力,最终实现了一个简单的可行示例。
摘要由CSDN通过智能技术生成

  由于项目有视频聊天的需求,在网上了解到谷歌开源的webrtc可以实现p2p的视频通信,参考了很多网上的资料,最终还是硬着头皮去webrtc官网,找到基于webrtc官网的demo,demo本身是基于本机的,源代码是模拟了两个pc来通信,要实现局域网两台设备建立webrtc连接,前提是双方拿到对方的sdp和icecandidate,彼此交换对方的这两个信息,就可以视频聊天了。webrtc使用了大量的异步函数,所以在需要获取同步等待结果返回的时候,需要在调用webrtc异步函数的时候,声明自己的方法也为异步的,使用关键字async,然后在需要等待webrtc异步函数返回的地方才能使用await.比如一下,被叫方接收到对方的sdp后,需要返回自己的sdp给对方,但是webrtc的createAnswer本身是异步的,不声明async就无法使用await来获取被叫的sdp,也就是answer,

    //接收对方视频
	pc1.addEventListener('track', gotRemoteStream);

 

//sdp信息
 sdp: 'v=0\r\n' +
      'o=- 8052014341169179559 2 IN IP4 127.0.0.1\r\n' +
      's=-\r\n' +
      't=0 0\r\n' +
      'a=group:BUNDLE 0 1\r\n' +
      'a=msid-semantic: WMS 1eb10fb2-e3c8-4e4e-9870-1104ec8c18c5\r\n' +
      'm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 125 104\r\n' +
      'c=IN IP4 0.0.0.0\r\n' +
      'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
      'a=ice-ufrag:j8uE\r\n' +
      'a=ice-pwd:rAhd4UW0wBS+D82R2gXsBAi1\r\n' +
      'a=ice-options:trickle\r\n' +
      'a=fingerprint:sha-256 15:BC:51:0E:B8:68:D4:78:61:BB:C1:34:34:D2:83:CB:0F:C3:BF:81:DC:BE:2F:00:28:39:DA:D5:BA:65:9
1:68\r\n' +
      'a=setup:actpass\r\n' +
      'a=mid:0\r\n' +
      'a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\n' +
      'a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n' +
      'a=extmap:4 urn:3gpp:video-orientation\r\n&
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值