webrtc简单介绍以及用法(native) WebRTC的C/C++ API

原文:https://blog.csdn.net/mqdChalali/article/details/52923630

WebRTC的C/C++ API

https://blog.csdn.net/woaitingting1985/article/details/78023570



本文不适合JS调用方法,但是可以参考,原理大同小异。

适用于JAVA,OC,C++。其实也就是相关平台WINDOWS,IOS,android,linux。


官方的接口和使用流程如下:

https://webrtc.org/native-code/native-apis/

可能有些难以看懂。那么可以先看我的使用方法,再回去看官方文档。


先介绍webrtc,其实他是一个客户端用的东西。主要包含音视频相关以及P2P服务这两大块功能。

音视频提供了编解码,回声消除,声音增益,去噪。

P2P则封装了SDP协议消息,与turn服务器通信。

也就是说,它是一个无关使用逻辑,仅提供模块功能的强大库。


RTCPeerConnection就是webrtc用来创建客户端连接和视频通讯的API.为了初始化这个过程 RTCPeerConnection有两个任务:


1,确定本地媒体条件,如分辨率,编解码能力,这些需要在offer和answer中用到.

2,取到应用程序所在机器的网络地址,即称作candidates.

一旦上面这些东西确定了,他们将通过信令机制和远端进行交换.

举个例子说它的使用逻辑以及伪码:


A呼叫B,这里有2条线,一条是互相交换媒体信息,网络地址,另一条是与TURN服务器的打洞:

线路1:

1,A通过PeerConnectionFactory创建一个 RTCPeerConnection对象.

安卓用户记得调用initializeAndroidGlobals初始化环境,否则会奔溃。

ICE服务初始化

PeerConnection.IceServer ice = new PeerConnection.IceServer(IceAddr, user, password);
ices.add(ice);

创建本地媒体

MediaConstraints audioMC = new MediaConstraints();
AudioSource as = pcf.createAudioSource(audioMC);
AudioTrack at = pcf.createAudioTrack("localaudiotrack", as);
localMS = pcf.createLocalMediaStream("localmediastream");
localMS.addTrack(at);

2,A创建一个offer(即SDP会话描述)通过RTCPeerConnection createOffer()方法.

3,A调用setLocalDescription()方法用他的offer.

4,A通过信令机制(这些用户自己实现)将他的offer发给Eve.

5,B调用setRemoteDescription()方式设置A的offer,因此他的RTCPeerConnection知道了A的设置.

setRemoteDescription(this, _remoteSDP);

6,B调用方法createAnswer(),然后会触发一个callback,这个callback里面可以得到自己的answer.

7,B设置他自己的ansew通过调用方法setLocalDescription().

8,B通过信令机制将他的answer发给A.

9,A设置B的answer通过方法setRemoteDescription().


线路2:

另外A和B也需要交换网络信息(即candidates)

这个candidates是描述和TURN的交互信息。可能有洞的变化,等等。明白UDP打洞的会直接明白,可以看看我的另一篇博客(http://blog.csdn.net/mqdchalali/article/details/52893160)。

1,A创建RTCPeerConnection对象时设置了onicecandidate handler.

2,hander被调用当candidates找到了的时候(就是说A和TURN服务器有了交互,找到了传输数据的通道,可能是中转,可能是P2P通道,这些是透明的用户无法看到).

3,当B收到来自A的candidate消息的时候,他调用方法addIceCandidate(),添加candidate到远端描述里面.


也就是说,我们只需要实现自己的信令服务器,配合上面的流程就可以使用。

具体的代码细节,建议去看官方的安卓demo,或者C++版本的demo。

下载源码后,路径如下:

 webrtc-master-webrtc\examples\androidapp\  

webrtc-master-webrtc\examples\peerconnection\client\

猜你喜欢

转载自blog.csdn.net/twd_1991/article/details/80732523