【WebRTC研究(4)】讓WebRTC支持H264編解碼

讓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 順序是:

  1. VP8

  2. VP9

  3. 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.hsrc\third_party\ffmpeg\chromium\config\Chromium\win-msvc\x64\config.h中的

#define CONFIG_H264_DECODER 0

修改爲1。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章