linphone-解决3.2.5版本在Android5.0以前的系统没有H264编码的问题

来源:互联网 发布:软件著作权怎么申请 编辑:程序博客网 时间:2024/06/04 17:42

说明

上个月,我下载当时最新版linphone,tag版本是3.2.5。不知道从哪个版本开始,linphone改了整体的编译方式。重新用python进行编译的方式和部分文件的生成。
这都不是问题,但是,在android5.0以前版本并不支持。从网络上搜索了好多答案,基本上都是说H264不开源,而我下的还是开发版本,所以并没有将libopenh264.so这个不开源的库打包进入。所以导致了,Android5.0以前的版本没有H264编码的问题。

成功之后的界面

解决方法

  1. ./prepare.py -ac 编译所有的文件。
  2. 从网络上下载libopenshh264.so库文件放到libs/文件夹下。

解决思路

这个要特别感谢QQ群:377532905今何在的帮助,这个问题困扰了很久。以前的解决思路将在下篇中给出。

  • 查看logcat输入日志,找到没有链接到lipopenh264.so库
  • 查看java代码,知道缺失代码,需要下载so库的下载地址。
  • 将下载下来的库解压,改名,放到libs文件夹下,即可显示H264编码,并且可用。

解决步骤

1. 打开Debug模式

打开linphone并勾选Debug模式

打开linphone并勾选Debug模式,显示具体的log。

2. 查看logcat,找到问题点

找到问题点

其中有一个加载libmsopenh264.so的地方,其中要动态添加”libopenh264.so”文件。

3. 查看java代码,查找需要缺失的地方

在OpenH264DownloadHelper中,找到了如下代码

    /**     * Default values     * nameLib = "libopenh264-1.5.so"     * urlDownload = "http://ciscobinary.openh264.org/libopenh264-1.5.0-android19.so.bz2"     * nameFileDownload = "libopenh264-1.5.0-android19.so.bz2"     */    public OpenH264DownloadHelper(Context context) {        userData = new ArrayList<Object>();        licenseMessage = "OpenH264 Video Codec provided by Cisco Systems, Inc.";        nameLib = "libopenh264.so";        urlDownload = "http://ciscobinary.openh264.org/libopenh264-1.5.0-android19.so.bz2";        nameFileDownload = "libopenh264-1.5.0-android19.so.bz2";        if(context.getFilesDir() != null) {            fileDirection = context.getFilesDir().toString();            Log.i("[OpenH264Downloader] fileDirection =context.getFilesDir().toString() = " + fileDirection);        }    }

其中,“http://ciscobinary.openh264.org/libopenh264-1.5.0-android19.so.bz2“就是libopenh264.so代码, 下载下来,解压缩并改名就可以

4.下载so库,放入libs文件夹

放入libs文件夹中, 其中我的设备都是armv7, 放入这个libs下的armv7文件夹中就可以运行。由于没有x86的手机,并没有测试这个。不过我想,应该一样的, 因为链接地址是一样的。

5. 运行,并测试

通过H264编码进行视频通话。OK,成功!好兴奋a。

其中在解决问题之前,我进行了大量的代码排错工作。下篇粘出。

0 0
原创粉丝点击