Development | WebRTC

2016-12-16 译:

当前支持Windows ,Mac OS X , Linux, Android 和 IOS平台.查看AndroidIOS 的构建说明和这些移动平台特定的例程.

开始之前


首先,确保安装 预先要求的工具软件.

获取源码


对于桌面开发者:
1.创建一个工作目录,进入该目录,并且运行 fetch webrtc

mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync

注意:由于bug 5578,你可能需要按’y’ 获取许可证对话框来下载 Google Play Service SDK.
由于将会下载几个Gbyte的整个Chromium 存储库和依赖关系,下载过程将会耗费很长时间.
不要中断其中的步骤,否则将需要全部重新开始(可能需要在执行gclient sync前清理).
2.(可选)设置如何跟踪新分支

git config branch.autosetupmerge always
git config branch.autosetuprebase always

3.或者你可以创建新的分支(推荐):

cd src
git checkout master
git new-branch your-branch-name

查看AndroidiOS 单独的说明

更新代码


使用下面的命令更新当前的分支

git pull

注意:如果你不是在一个分支上,git pull 将不起作用,你需要使用git fetch 代替之.

定期更新WebRTC的构建工具链和依赖关系.可以通过下列命令获取更新:

gclient sync

构建


Ninja是所有平台的默认构建系统
查看 AndroidiOS 这些平台单独的构建说明.

生成Ninja工程文件
使用GN 生成 Ninja 工程文件,它将根据你的选择创建一个路径,像 out/Debug 或 out/Release ,你也可以使用任何路径灵活地保存多个配置.
为了生成默认(Debug build)的工程文件,执行:(在 src/ 路径下执行)

gn gen out/Default

注意:默认下调试构建是组件构建(动态共享库), 当需要发行构建时需要将is_component_build=false 传递给gn gen –args 发行构建默认是静态库.
使用下列命令来发行构建ninja工程文件:

gn gen out/Default --args='is_debug=false'

要清除目录中的所有构建工件,但保留当前GN配置(存储在args.gn文件中),请执行:

gn clean out/Default

查看GN文档获取可用的选项.更多祥光平台提示信息可以查看AndroidiOS

使用GYP(已弃用)
注意:GYP不再受支持,并且可能很快消逝.我们鼓励你尽快迁移到GN上来.如果你仍需要使用GYP,请参考在generate_build_file中GYP构建步骤的命令行,这里.
使用GYP时,Ninja的工程文件默认由GYP在out/Debug 和out/Release 中生成.重新生成Ninja 工程文件需要执行:

python webrtc/build/gyp_webrtc.py

编译


当你使用Ninja工程文件后,在 src/ 路径下使用:
对于Ninja工程文件,默认生成到 out/Default :

ninja -C out/Default

使用其他构建系统
其他构建系统是不受支持的(容易失败),例如Windows下的Visual Studio 或 OSX下的Xcode .GN支持使用Ninja构建的混合方法,但Visual Studio/Xcode 可用于编辑和驱动编译.
要生成IDE工程文件,传递–ide 标志位给GN命令. 参照GN参考获悉更多支持IDEs的细节.

使用发布分支


查看可用的发布分支可以执行:

git branch -r

注意:如果你只看到本地分支,则是在我们切换到Git(2015.03.24)之前创建的checkout,这种情况下,首先执行:

cd /path/to/webrtc/src
gclient sync --with_branch_heads
git fetch origin

你现在应该在.git/config [remote “origin”]下可以找到下列条目:

fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*

创建一个本地分支跟踪远程发布分支(在下列例子中是 “43” 分支):

git checkout -b my_branch refs/remotes/branch-heads/43

分支的提交日志:https://chromium.googlesource.com/external/webrtc/+log/branch-heads/43
浏览它:https://chromium.googlesource.com/external/webrtc/+/branch-heads/43
查看更多细节,可参照Chromium的Working with BranchesWorking with Release Branches

贡献补丁


请参照Contributing Fixes获悉如何在WebRTC代码基础下提交修改,同时,你需要设置认证从而来提交补丁.

提交代码


要直接提交代码到Git仓库,你必须是一个提交者。 外部贡献者创建的CL可以通过提交队列(Commit Queue,CQ)提交。
真正的源码在Git仓库 : https://chromium.googlesource.com/external/webrtc. 为了确保可以提交代码. 你需要执行一下步骤(前提你是提交者).
1.前往https://chromium.googlesource.com/new-password 并且登录你的webrtc.org账户.
2.按照如何在本地路径下认证.gitcookies文件的说明.
3.前往https://chromium-review.googlesource.com 并且登录你的webrtc.org账号.该操作将会在Gerrit认证系统下创建正确的提交者组织的用户.
4.请求添加到提交者组织中.以能够推送代码.
5.确保你在depot tools setup page的指定git配置中的设置user.name 和 user.email .如果你同时是chromium的代码提交者,阅读下一节.

使用以下命令提交修改列表到GIT仓库中
git cl land

注意:在Windows下,你将需要在git bash 下运行该指令以保证gclient找到.gitcookies文件.
有时候有必要绕过预提交检查(就像修复已经关闭的树的错误),然后使用 -bypass-hooks 标志.

Chromium 提交者


许多WebRTC代码提交者同时也是Chromium代码提交者,在Git 配置中设置user.email 以确保以正确的账号推送提交的代码.推荐的做法是在全局设置Chromium.org 的账号,在本地设置user.email 仓库使用者(该为你的webrtc.org地址).

cd /path/to/webrtc/src
git config user.email yourname@webrtc.org

示例应用程序


WebRTC包含几个示例程序,这些应用程序可以在 src/webrtc/example 和 src/talk/example下找到.以下首先列出的是高级的应用程序.

Peerconnection
Peerconnection 使用WebRTC Native APIs,由两个应用程序组成.

  • 一个服务端程序,目标名称为:peerconnection_server ;
  • 一个客户端程序,目标名称为:peerconnection_client ;

客户端可以简单地俘获音频和视频,服务器使得客户端应用能够通过管理由客户端生成的信令消息来发起客户端之间的呼叫。

在两个peerconnection_client 之间建立p2p连接
启动peerconnection_server后,你可以在它运行后看到以下信息:

Server listening on port 8888

启动任何数量的peerconnection_client 并且将它们连接到服务端上,客户端的UI界面包含以下几个部分:
- Connecting to server ,当程序运行后你必须指定服务端具体是哪台机器(通过IP地址识别),一旦制定后就可以按 Connect 或者 回车按键.
- Select a peer : 一旦连接到服务端后,你可以在peer name 上双击或者选择+回车 来和另一个peer连接.
- Video Chat : 两个peer端建立连接后,Video Chat 将会全屏显示在窗口上.
- Ending chat session : 按下 Esc,你可以回到选择peer 的界面上.
- Ending Connection : 按下 ESC ,你可以回到选择server 的界面上.
- Testing Peerconnection_server : 启动 peerconnection_server 的应用实例,在浏览器中打开路径为rc/webrtc/examples/peerconnection/server/server_test.html 的html 文本,点击connect,注意peerconnection_server 将会公示你的连接,打开一个以上同样链接的 tab ,连接上它(使用不同的名称),现在你可能可以在连接的peer两端上交换信息了.

Call App
目标名称为call(当前以取消),一个使用libjingle建立呼叫的应用程序,call 使用xmpp 以使你可以登录到gmail账户并且和gmail好友进行音频和视频通话.这是建立在libjingle之上来提供此功能的.
此外,你可以指定RTP输入输出的储存库,它提供两个简单的输入RTP储存库:包含单信道流的voice.rtpdump,使用G722编码的16khz的视频流,以及包含的30帧每秒,H264编码的320x240 video.rtpdump, 所提供的示例将可以和Google Talk Video 互操作.如果你指定了不同的输入RTP dump 你需要在call_main.cc (215-222行)中修改编码器.

Relay Server
目标名称为:relayserver ,在直接的p2p 连接无法建立的情况下提供中继传输.可用于Call应用程序中.

STUN Server
目标名称: stunserver ;实现用于遍历NAT实用工具协议的服务器;参阅 RFC5389说明文档.

TURN Server
目标名称: turnserver ; 实际开发中和 RFC 5766 达到兼容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值