让WebRTC支持H264编解码
一般我们会使用H.264编码格式,否则默认是谷歌自己的VP8、VP9。开启方式如下:
--args="proprietary_codecs=true ffmpeg_branding=\"Chrome\""
执行完毕后,可以使用下列命令验证一下:
gn args out/Debug --list=proprietary_codecs
gn args out/Debug --list=rtc_use_h264
看到 Current Value 为 true,就说明H264编码已经生效了。
到这里还没结束, 因为网页使用 WebRTC 发送 SDP ,进行协商时,默认的 codec 顺序是:
-
VP8
-
VP9
-
H264
所以需要修改源码,internal_encoder_factory.cc,GetSupportedFormats函数,将H264编码器移到最前面,代码如下:
std::vector<SdpVideoFormat> InternalEncoderFactory::GetSupportedFormats()
const {
std::vector<SdpVideoFormat> supported_codecs;
//chb 20191106
for (const webrtc::SdpVideoFormat& format : webrtc::SupportedH264Codecs())
supported_codecs.push_back(format);
supported_codecs.push_back(SdpVideoFormat(cricket::kVp8CodecName));
for (const webrtc::SdpVideoFormat& format : webrtc::SupportedVP9Codecs())
supported_codecs.push_back(format);
return supported_codecs;
}
src\third_party\ffmpeg\chromium\config\Chromium\win\x64\config.h
和src\third_party\ffmpeg\chromium\config\Chromium\win-msvc\x64\config.h
中的
#define CONFIG_H264_DECODER 0
修改为1。