利用webrtc静态库进行ndk开发

背景:

在janus视频网关下进行音视频会议开发已经有一定的时间了,pc,android,ios都处于打磨产品的阶段了,基本的功能都已经实现了。
为了让我们的产品往更好的方向走,更加通用,我们决定出开发一套sdk,在pc,android,ios下跨平台。

编译的艰辛:

虽然我可以在linux和windows下都能够进行开发,
但是第一次在android平台下进行ndk的开发,这里经历的困难,血和泪也只有我自己清楚。

步骤:

1、第一步编译出android下的libwebrtc.a(具体webrtc在android下编译,大家自己网上搜索),开始我们的webrtc代码是m74版本。
2、编译链接库,在m74版本链接库的时候就出现了出现了各种链接不上std::_1,
因为第一次在ndk下开发,不会怀疑别人的问题更何况是google,更多考虑的是自己的问题,所以,修改各种配置。大约经历一天一夜之后,我也开始怀疑谷歌了,各种搜索,
https://groups.google.com/forum/#!topic/discuss-webrtc/o-zDdrq09yk
下发现,m74确实存在问题,后来在其他人的提示下,我们退回到72版本,是稳定版本,果然问题解决了。
3、写测试,demo我们也简单的写了几个例子通过了。
但是问题又来了,在关键的函数CreatePeerConnectionFactory函数时奔溃了,于是我们又上网搜索,回退版本,还是一样。
4、经历了各种艰辛搜索,android studio 打出日志,check g_jvm failed,才醒悟过来发现jvm未初始化,主要还是对java和android开发不清楚,对这样的描述不是特别敏感
不像写c++那样当出现link 2001,2019 这些错误的时候,能想到具体是哪里的问题。于是初始化 webrtc::JVM::Initialize,还没完,运行还是会报错:如未发现org.webrtc等文件,发现是要导入jar,
后来索性导入libwebrtc.jar ,
5、运行成功。

最后在这里和各位小伙伴分享一下在android studio下编译libwebrtc.a 和应用,后续肯定还会有其他的问题,也希望有其他小伙伴和我一起来完成这任务。
也感谢在这期间给我帮助的小伙伴。

你可能感兴趣的:(音视频)