1. 程式人生 > >WebRTC支援H264 Simulcast

WebRTC支援H264 Simulcast

最近和好友交流中,聽說WebRTC已經支援了H264 Simulcast,於是便去搜索了一下相關的資訊,記錄於此。

獲取了最新的WebRTC的master程式碼,檢查發現今年6月份的時候,確實有一個H264 Simulcast實現的Commit。仔細檢視原來就是已經提交了2年多的webrtc:5840問題,終於被批准合併到master,真是可喜可賀!(不過並沒有從最近的幾個WebRTC的Release Notes裡面發現官方宣佈支援H264 Simulcast的訊息。)

再看提交的程式碼內容,會發現要能啟用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,應該還是需要再等等。