webrtc开启h.264编解码功能

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__",
     ]

猜你喜欢

转载自blog.csdn.net/TopsLuo/article/details/88117748