前面两篇已经讲了如何手动编译并封装WebRTC Native C/C++ API的方法及思路,本篇继续对封装的API进行进一步使用,将此功能使用在移动端进行演示,这种使用方式,更适合于即时通讯类产品应用.
打入补丁文件
由于目前版本的WebRTC提供的api封装已经高度集中化,而我这边自己进行封装比较偏向于底层,目的在于解耦,因此底层的封装库就应该完全包含音视频的采集,降噪,编解码,传输功能,这样才能与上层的https/DTLS/ICE等完全解耦,通过研究源码发现,对于音频这块,底层还有各个跨平台的支持,但是对于视频的采集,渲染等,由于WebRTC团队的其他因素考虑(大概是将这部分功能移到APP层去实现,可参考这个说明),从r51版本开始移除视频渲染模块,从r46开始移除视频采集模块,因此这部分需要我们手动将补丁打进去,以方便我们从底层解耦,通过Java jni/Object-C方式调用移动设备的硬件部分功能,这部分的主要修改增加在src/modules/下增加video_capture和video_render子模块,并增加对android/ios平台支持,代码清单部分如下,全部源码请参考我的github下的webrtc_r67_patch子目录:
创建工程
关于Android/iOS平台的操作方法,不再分别进行操作,为简化叙述,以下命令均为Linux平台下编译Android平台目标文件为例,iOS平台的操作基本雷同,请参考前面环境搭建部分描述,不再赘述.