我已经大概在webrtc中文网看了一下内容:
在webrtc中SDP是用于交互多媒体流信息的最小不接去除单位
webrtc是先定位两个人的位置,然后两个人都跳到同一个链接里面进行数据互通。信令结束以后,就不需要web服务器在中间传递数据。
编解编码器的功能是压缩和解压音频和视频数据。
还有实现设备间的信息互通,可能需要中继TURN服务器,因为可能因为对方的防火墙和NAT和限制了(隐藏了IP地址或者)用于通信的洞,所以只好在通话的时候进行ICE协商。就是发起者这边发了一个offer,有关怎么找到要准备进行通话的小伙伴的方法。然后,将这个数据给到服务器,然后服务器再给到那个小伙伴,然后那个小伙伴就可以通过设备找到发起人,然后就可以开始设备之间的互通,而不需要服务器在中间传递数据。
webrtc 三大API
getUserMedia
PeerConnection
Data Channel
getUserMedia
应用:
#为用户文件档案拍照
#录制语音数据,并将数据发送到语音转文字引擎
#为用户录制语音或者视频,而且在掉包的情况下能保证语音及视频的质量不下滑
webrtc实例
https://www.jianshu.com/p/57fd3b5d2f80
Peer Connection
#生成并传递SDP (不是通过网络本身传递,而是生成他们并处理输入的消息)
#对音视频进行压缩和解压
#通过回声消除算法处理语音
#丢包隐藏,数据重传,抖动缓存区,估计宽带等功能
Data Channel
#信息传输的通道,设置通道是否可靠,设置可靠则可以自动重传。
#通道设计类似于websocketAPI界别的通道,所以可以用websocket的想法去看待它。
#通道设计类似于在websocketAPI级别上工作,所以可以用websocket的思考法式对待它。
想要一个webrtc的应用的实现方法,有以下几点:
1.客户端
2.信道
3.NAT
4.媒体
1.客户端
浏览器端使用javasrcipt进行开发,或者用框架,或者很多人都是直接从github上开始的。
如果是软件的话,应该挑选合适的sdk。
如果是pc,则使用psdn或者嵌入式的方法进行开发。
如果是pc的话,则可以用Electron进行完成,说着用嵌入式的方式完成。
2.信道
你需要一个新到服务器,当然也可以不要。在用之前,你必须检查你的服务器是否有信道机制用于
非webrtc上。如果有,你可以在这些机制上搭载sdp消息和其他webrtc信令。
3.NAT
一下是你不应该做的:
#不用trun服务器
#不用公共服务器
#不用stun公共服务器
#所有服务都在同一个服务器上实现
#不要一上来就想布置世界级的全球服务网络。
以下是你应该做的:
#部署stun和turn在同一进程
#stun和turn应该在同一个服务器上部署,而且要部署到同一进程中。
#用coturn,几乎所有人都在使用。
#你也可以从其他公司获取NAT服务,例如XirSys和T willio也是不错的选择。
4.媒体
如果你使用pstn或者视频会议,音频或者更高级的功能,建议使用一个媒体服务器。
现在市面和商业服务器有很多,他们在很很多方面是有区别的。
现在开源和商业的服务器有很多,他们在很多方面都是有区别的。
webrtc使用领域前瞻
1.机器学习和人工智能
2.在线学习
3.在线医疗
4.社交媒体
webrtc打洞就是将交换数据双方ip,port和nat信息通过信令服务器进行交互,然后双方各自获得对方的信息后就进行穿透,stun对p2p依然后有问题,所以还需要用到ICE。然后libjingle就是ICE思想的具体实现。
但是我不知道怎么着手去弄,信令服务器我查了,没有说买信令服务器的,都是说配置的。所以我不知怎么做了?希望有哪位老师指点一下。感激不尽!