讓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。