官方文档: http://webrtc.github.io/webrtc-org/native-code/development/
1.环境准备
1.1 安装depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
下载完成后,将它添加到系统的PATH中:
2. 源码下载
2.1 下载
mkdir webrtc
fetch --nohooks webrtc
接着就是漫长的等待.
代码拉取完成后,执行:
gclient sync
设置新分支追踪方式(可选):
git config branch.autosetupmerge always
git config branch.autosetuprebase always
建议创建自己分支进行开发:
cd src
git checkout master
git new-branch your-branch-name
2.2 源码更新
git checkout master
git pull origin master
gclient sync
git checkout my-branch
git merge master
3. 编译
如果是在Linux((Ubuntu/Debian))上需要运行
./build/install-build-deps.sh
如果是windows下,需要仿照chromiu编译设置:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md .
默认使用ninja编译系统.
和编译chromium一样,先要设置编译参数:
#gn gen out/Default
gn gen out/Default --args='is_debug=false'
可以使用
gn clean out/Default
清理编译中间产物.
编译:
ninja -C out/Default
可以通过GN了解更多选项.
android平台请参考: http://webrtc.github.io/webrtc-org/native-code/android/ .
ios平台参考: http://webrtc.github.io/webrtc-org/native-code/ios/ .
编译:
ninja -C out/Default
4. 应用实例
WebRTC包含了一些应实例,你可以在src/webrtc/examples
和src/talk/examples
目录下找到它们. 更高级别应用列在最前面.
Peerconnection
Peerconnection
包含两个使用WebRTC Native APIs的应用:
peerconnection_server
是服务端应用;peerconnection_client
是客户端应用(目不支持Mac/Android).
客户端程序具简单的语音和视频功能.通过服务端,客户应用可以通过由客户端生成信令(signaling)来管一个会话(call).
peerconnection_clients之间建立p2p连
启动peerconnection_server
,你可看如下所示的运行状态表面它正在运行:
Server listening on port 8888
启动任意数量的peerconnection_clients
,并连接服务器.客户端UI包含一下几个部分:
Connecting to a server
: 当启动应用程序时,你必须指定服务器应用运行主机(通过IP地址).一旦做到这一点,你可以按Connect
或者return
按钮.Select a peer
: 一旦成功连接到服务器,你可以通过双击或者选择对端的名字进行连接;Video chat
: 当成功连接到一节点,视频聊天将显示在整个窗口.Ending chat session
: 按Esc
. 你将回到选择对端节点.Ending connection
: 按Esc
,你现在可选择你要连接的服务器.Testing peerconnection_server
: 运行一个peerconnection_server
实例.在你的浏览器中打开src/webrtc/examples/peerconnection/server/server_test.html
.点击Connect
.观察该peerconnection_server
公布的连接信息。打开另一个相同页面的tab,也连接它(使用不同的名字),现在可以在所连接的节点间交换消息.
Call App
call
(currently disabled),使用Libjingle
建立call应用.
Relay Server
relayserver
, 为不能直接建立p2p连接的场景提供中继.可在上面的Call
应用中使用.
STUN Server
stunserver
, 实现了STUN协议,提供NAT穿透.
TURN Server
turnserver, 在单元测试中使用.