webrtc开启h.264编解码功能

14 篇文章 1 订阅
12 篇文章 1 订阅

https://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/YoMQmOBPZn8
自己编译的webrtc库发现无法正常使用h.264编解码器,所以猜测可能是在编译的过程中默认没有开启h.264功能。
首先,我们应该查询一下gn编译的时候是否可以选择h.264。查看gn编译的可选参数命令行为:

#查看帮助
gn help

#查看如何获取参数帮助
gn args 

#生成参数集
gn args ./args

#查询可用参数
gn args ./args --list

最终发现,rtc_use_h264默认是false,即不使用h264。

而我之前在编译webrtc的时候使用的是默认的参数,如下:

gn gen out/arm-v8a --args='target_os="android" target_cpu="arm64" is_debug=false use_rtti=true’

故无法正常使用h.264编解码器。

开启h.264编解码功能的编译参数为:

gn gen out/arm-v8a --args='target_os="android" target_cpu="arm64" is_debug=false use_rtti=true rtc_use_h264=true proprietary_codecs=true’

但执行会报错(注:我选择的是release 70版本,较新版本已经解决了该BUG,具体版本不清楚,详情),具体错误如下:

ERROR at //third_party/openh264/BUILD.gn:38:5: Undefined identifier.
    defines += [ "ANDROID_NDK" ]
    ^------
See //modules/video_coding/BUILD.gn:325:7: which caused the file to be included.
      "//third_party/openh264:encoder",

引起该错误的原因是由于编译openh264的脚本存在错误,修改一下//third_party/openh264/BUILD.gn即可解决该问题:

 config("config") {
   cflags = []
+  defines = []
 
   if (is_chromeos && target_cpu == "arm") {
     # HAVE_NEON and __chromeos__ are needed for enabling NEON on ChromeOS
     # devices.
-    defines = [
+    defines += [
       "HAVE_NEON",
       "__chromeos__",
     ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值