WebRTC支持H264 Simulcast

最近和好友交流中,听说WebRTC已经支持了H264 Simulcast,于是便去搜索了一下相关的信息,记录于此。

获取了最新的WebRTC的master代码,检查发现今年6月份的时候,确实有一个H264 Simulcast实现的Commit。仔细查看原来就是已经提交了2年多的webrtc:5840问题,终于被批准合并到master,真是可喜可贺!(不过并没有从最近的几个WebRTC的Release Notes里面发现官方宣布支持H264 Simulcast的消息。)

WebRTC支持H264 Simulcast_第1张图片

再看提交的代码内容,会发现要能启用H264 Simucalst,还需要给WebRTC打开一个开关:WebRTC-H264Simulcast

// Returns true if the given codec is disallowed from doing simulcast.
bool IsCodecBlacklistedForSimulcast(const std::string& codec_name) {
  return webrtc::field_trial::IsEnabled("WebRTC-H264Simulcast")
             ? absl::EqualsIgnoreCase(codec_name, kVp9CodecName)
             : absl::EqualsIgnoreCase(codec_name, kH264CodecName) ||
                   absl::EqualsIgnoreCase(codec_name, kVp9CodecName);
}

那么现在的Chrome浏览器已经支持这个开关了吗?我尝试Google Chrome Canary v72的版本,启动的时候加入了参数 -force-fieldtrials=WebRTC-H264Simulcast/Enabled/。然后在webrtc samples: munge-sdp测试页面通过修改sdp以支持simulcast方式启动一个H264视频对话,并通过Wireshark来抓包检查RTP流。但是很遗憾,依旧只能看到一路H264的视频流。(使用同样的方法启动VP8视频对话,是可以成功看到多路VP8视频流。)

所以,从目前了解的情况看:WebRTC的Native代码已经是可以支持H264 Simulcast,但是如果想要在Chrome浏览器上开启H264 Simulcast,应该还是需要再等等。

你可能感兴趣的:(WebRTC,Simulcast)