Android WebRTC 软件编解码基于 openH264 和 FFMpeg,但是编译时默认是不开启的,想要开启需要对代码做一定的增加修改,下面我将所有修改步骤一一列出。
本文基于
webRTC 版本:(https://chromium.googlesource.com/external/webrtc/+/branch-heads/4515)
设备:Mac
虚拟机:Parallels Desktop + Ubuntu 18.4
开始
一:修改 rtc_use_h264 返回值
路径:webrtc/src/webrtc.gni ,打开该文件,修改 rtc_use_h264 属性为 rtc_use_h264 = true
# rtc_use_h264 =
# proprietary_codecs && !is_android && !is_ios && !(is_win && !is_clang)
rtc_use_h264 = true
二:修改 ffmpeg 相关编译参数
路径:webrtc/src/third_party/ffmpeg/ffmpeg_generated.gni
这里需要打开很多与 H264 相关的编译开关,务必看清楚,不然编译会报这种错❌
以下是我参考网上各种资料博客整理出来的,只编译armv7、arm64
#:行
198#
if ((is_mac) || (is_win) || (use_linux_config))
修改
if ((is_mac) || (is_win) || (use_linux_config) || (is_android))
252#
if ((is_mac && ffmpeg_branding == "Chrome") || (is_win && ffmpeg_branding == "Chrome") || (use_linux_config && ffmpeg_branding == "Chrome") || (use_linux_config && ffmpeg_branding == "ChromeOS"))
修改
if ((is_mac && ffmpeg_branding == "Chrome") || (is_win && ffmpeg_branding == "Chrome") || (use_linux_config && ffmpeg_branding == "Chrome") || (use_linux_config && ffmpeg_branding == "ChromeOS") || (is_android))
295#
if ((is_mac && current_cpu == "x64") || (is_win && current_cpu == "x64") || (is_win && current_cpu == "x86") || (use_linux_config && current_cpu == "x64") || (use_linux_config && current_cpu == "x86"))
修改
if ((is_mac && current_cpu == "x64") || (is_win && current_cpu == "x64") || (is_win && current_cpu == "x86") || (use_linux_config && current_cpu == "x64") || (use_linux_config && current_cpu == "x86") || (is_android && current_cpu=="x86") || (is_android && current_cpu=="x64"))
376#
if ((is_mac && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (use_linux_config && current_cpu == "x64" && ffmpeg_branding == "Chrome") |