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

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