webrtc这个坑

         像这种成熟开源项目没有必要百度google,直接去官网就行了,官网上的资料都很详细。当然需要。我用的是express,这是一个外国的,还比较靠谱。我之前用的是国内的coco,这个在一个多月前用不了了。不知是封了还是老板跑路了。


        由于当前用的回声抑制库的CPU使用率过高,于是开始研究webrtc。运行了WebRTCDemo,看了一看单纯音频处理这一块的CPU使用率并不高。webrtc也是google的开源项目,下载代码的方式和Crosswalk应该是一样的。在Android源码中和Crosswalk中都有webrtc的源码,理论上在他们的代码中也能够编译webrtc,我在crosswalk中运行了webrtc中生成gyp的脚本gyp_webrtc提示依赖chromium,我觉得这是个坑,还是下载源码吧。wenrtc用到chromium中的基础库和编译工具,所以也要下载chromium。这个项目下载下来22G,大大出乎我的意料,因为单纯的webrtc代码才100多M。

        接下来开始编译了,还是出现了新的坑。python webrtc/build/gyp_webrtc,提示一个java文件找不到,我在webrtc issue上搜到这个问题,这个问题的状态是Fixed,表明已经解决了。我下载的代码已经是最新的,我看看了针对这个问题改动的文件和我下载下来的也一样,理论上不应该出现这个问题。错误是某个模块依赖的文件找不到,正好这个文件在test目录中,我想应该无关紧要,打开chromium/src/base/base.gyp,搜索这个文件,发现它属于junit_test这个模块,junit是一个自动测试的框架。注释掉应该无关紧要。注释掉之后这个错误过去了,但是出现新的错误,pkg-config找不到gobject gtk等。编译Android版的肯定不需要gtk。首先想到是不是下错了,但是已经gclient config过了,.gclient 也是Android。文件应该没有下载错误。代码仓库在master,这是开发中的版本,应该不问题。应该在稳定版本上编译,果然官网上提到了如何在分支上工作,我选择在branch-heads/43,这是一个靠中间的版本。切换完分支后再次运行python webrtc/build/gyp_webrtc,还是原来的错误。想到GYP_DEFINES是以环境变量的形式存在,除了config时用到,其他的命令也许同样会用到,于是export GYP_DEFINES="OS=android"。再执行python webrtc/build/gyp_webrtc通过。

编译后又出现下面这个错误:

-compile:
    [javac] Compiling 4 source files to /mnt/sda/project/android_webrtc/src/webrtc/examples/android/opensl_loopback/bin/classes
    [javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
    [javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
    [javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
    [javac] error: warnings found and -Werror specified
    [javac] 1 error
    [javac] 3 warnings

BUILD FAILED
/mnt/sda/project/android_webrtc/src/third_party/android_tools/sdk/tools/ant/build.xml:720: The following error occurred while executing this line:
/mnt/sda/project/android_webrtc/src/third_party/android_tools/sdk/tools/ant/build.xml:734: Compile failed; see the compiler error output for details.
我想是不是和jdk的版本有关,系统中用的是jdk1.6和jdk1.8,官网上用的是1.7。我从jdk1.6换到jdk1.8,虽然不是1.7感觉应该和这无关。

opensl_loopback编译不过也许我要的WebRTCDemo能够编译过。ninja -C out/Release WebRTCDemo,编译过了。


成功!


后续问题

我将media_demo导入进eclipse,失败了。对比了一下其他的工程发现少了.project文件和.settings文件夹,补上之后仍然不行。折腾了一阵终于好了,两个原因:

1、代码目录不能拷贝到workspace目录下面。

2、一个workspace下面不能有两个相同名称的工程。


你可能感兴趣的:(webrtc)