WebRTCをH.264とVP8で速度差を計る

WebRTCをH.264でも動かせるようになったので、速度差を計ってやる。
(Chromeはencode timeも計れるが)標準のStatistics APIで計れるのは現状RTTのみ。
なので、カメラで撮影してから画面に出るまでの時間をはかるために、こんなしくみをつくった。

WebRTCの転送速度を測る

t2 - t1 - RTTが求めるEnd-Endの転送遅延である。
正直これはカメラにも依存するので、手持ちの中では一番いいカメラを使う。 今回は1280 * 960, 60FPSで撮影した。
(アップロードするにあたってgetUserMediaの指定は外した)

####結果

  Chrome Firefox (vp8) Firefox (H.264)
  144 178 206
  164 166 213
  185 183 203
  188 182 195
  175 163 199
  171 191 213
  175 184 200
  185 196 193
  171 182 182
平均 173.2 181.2 201

t2はrequestAnimationFrameが発火した際に計っているのと、
ピクセル色を取得するのにcanvasを経由して時間が掛かっているので、
実際こんなに遅くは無い。
Chrome://webrtc-internalsを見ると、
EncodeTime: 7ms
RTT: 1ms
DecodeTime: 13ms
CurrentDelayMs: 50ms

だったので、WebRTC以外の部分で100msほど余計にかかっているっぽい。
この辺の遅延が結構大きいので、Firefoxに比べてChromeのWebRTC実装が優秀とは
一概には言い切れない(一応描画まで含めると優秀と言っていいはず)のだが、
ただFirefoxのH.264がChromeやFirefoxのVP8よりも遅いということはわかった。

今回の実験に利用したオリジナルのソースコードはコレ

Written on November 10, 2015