#64 オンデマンド動画ストリーミング再生時の通信量

icon Takashi Murayama が 2020/10/09 18:02 に投稿 ( icon Takashi Murayama が 2020/10/27 9:42 に編集 <更新履歴> )

概要

Google ClassroomやISTUなどにオンデマンド教材として動画ファイルを掲載すると、多くはブラウザ上でストリーミング再生して視聴することになります。ストリーミング再生の際の通信量は元の動画ファイルのデータサイズと同じではなく、場合によっては何倍も大きくなることもあり注意が必要です。データダイエットのため動画のファイルサイズを小さくする工夫を凝らしても、ストリーミング再生では思った以上のデータが流れているかもしれません。

動画のストリーミング再生とダウンロード

配信サーバから動画や音声のデータを受信しながら逐次的に再生する方法がストリーミング再生です。

Google Classroomにアップロードされた動画ファイルはGoogle Driveに保存され、ストリーミングのための処理が行われます。Classroomの動画資料やGoogle Drive上の動画ファイルを開くと、Google Driveの動画再生機能によりウェブブラウザ上ストリーミング再生されます。このGoogle Driveの動画プレーヤーでは、再生される映像の画質(解像度)を変更することができます。

再生中の画面の右下にある歯車アイコンから「画質」をクリックすると1080、720、480、360といった数字が選択できますが、これらは映像の縦方向の画素数を表しています。数字が大きいほどより高画質になり、その分、配信サーバから受け取るデータ量も増えることになります。再生開始時は、画質は「自動」となっていて、再生するブラウザのウィンドウサイズや通信状況から最適なものが選ばれていますが、利用者が再生画質を落としデータ量を減らすことが可能です。

Google Driveに置かれた動画ファイルの共有設定でダウンロードを許可していれば、PCに保存することも可能です。この場合は、アップロードした元の動画ファイルがそのままダウンロードされます。通信量は元の動画のファイルサイズとなります。

ストリーミング再生時の通信量の測定

Classroomに動画を掲載し、ストリーミング再生ではどの程度の通信を行っているのかテストしてみました。極端に高画質な動画のケース、極端に低画質な動画のケース、そして実際によくあるケースとしてzoomで録画した動画について試しました。具体的には次の3種類です。

1.キヤノン一眼レフカメラで撮影した高画質な動画
長さ:3分8秒 MP4形式 ファイルサイズ:1.3GB
フレームサイズ:1920×1080 フレームレート:60fps 映像+音声ビットレート:59,782kbps

2.1の動画のクォリティを極端に落とした低画質な動画
長さ:3分8秒 MP4形式 ファイルサイズ:2.5MB
フレームサイズ:640×360 フレームレート:12fps 映像+音声ビットレート:109kbps

3.zoomでローカルレコーディングした講義の動画
長さ:9分39秒 MP4形式 ファイルサイズ:24.8MB
フレームサイズ:1920×1200 フレームレート:25fps 映像+音声ビットレート:357kbps

テストはWindows 10+Chromeで行い、使用するブラウザのウィンドウ以外の全てのソフトのウィンドウを閉じた上で、リソースモニタで大きなバックグラウンド通信を行っていないことを確認しながら行いました。ひとつの動画の通信量の測定直前にキャッシュをクリアした上でブラウザを再起動する操作を毎回行っています。測定は、まずClassroomから動画資料を開き、再生準備が整った状態(サムネイル画像と再生ボタンマークが表示された状態)にした後、ストリーミング再生前のネットワークインタフェースの受信バイト数をコマンドプロンプトから "netstat -e" により確認します。次に、再生を開始し、動画データの読み込み状況のプログレスバーが右いっぱいまで伸びるまで 待ち、ふたたび "netstat -e" により受信バイト数を記録します。再生の前後での受信バイト数の差をストリーミングに要したデータ量としました。ネットワークインタフェースでの受信バイト数を見ているので動画再生以外の通信も含んでいます。Chromeのデベロッパーツールを使うなどより正確な方法があるかもしれませんが、今回の方法でも大きな誤差を与えるほどではないと思われます。

ストリーミングのデータ量の測定結果

1.高画質動画(ファイルサイズ 1.3GB)
 プレーヤーの画質設定   受信データ量       
   1080           150 MB
    720            82 MB
    360            18 MB

いずれの画質でも動画のファイルサイズより大幅に少ない通信量となりました。フレームサイズだけでなくビットレートも調整してストリーミングのためのデータ量を減らしているのかもしれません。受信データ量はおおむね画質設定の数値の2乗に比例しているので、総画素数に比例しているようです。

2.低画質動画(ファイルサイズ 2.5MB)
 プレーヤーの画質設定   受信データ量       
    360            16 MB

こちらの場合は、ファイルサイズよりも受信データ量が大きくなりました。フレームレートやビットレートも極端に低くした動画のため映像の質はかなり悪いのですが、高画質動画を画質360で再生したときとあまり差のない通信量となっています。ストリーミング再生では、画質を落としてまでファイルサイズを小さくしたメリットが無くなってしまいました。

3.zoomで録画した講義の動画(ファイルサイズ 24.8MB)
 プレーヤーの画質設定   受信データ量       
   1080           514 MB
    720             269 MB
    360            45 MB

zoomは、リアルタイムのビデオ会議時には再生側のフレームサイズに合わせて解像度を落としたり、映像に変化が少ないときにはフレームレートを落としたりすることで、通信量を抑える動作をします。さらに、録画した動画もフレームサイズに対し比較的ファイルサイズが小さくなります。しかし、ストリーミング再生では、元の動画と同程度の画質設定である1080でデータ量がファイルサイズの20倍となりました。画質設定を360として再生しても受信データ量はファイルサイズの2倍近い値でした。

ISTUでの動画再生

ISTUでは約2GBまでの動画をアップロードできますが、サイスが大きいものは自動的にフレームレートを落とした動画に変換され、ISTU内に保存されます。テストに使用した1.3GBの高画質動画は、5fpsの11MBのMP4データに変換されました(なお、アップロード時に有線接続専用にチェックを入れると、同じ5fpsですがビットレートはより高くなり、36MBの動画に変換されました)。フレームサイズは1920×1080で元の動画と同じです。教員であればこの縮小化された動画ファイルをダウンロードすることができます。

一方、受講生は動画ファイルのダウンロードができないため、必ずブラウザ上でストリーミング再生することになります。ISTUでのストリーミング再生時の受信データサイズを調べたところ、テスト用高画質動画では67MBとなりました。アップロード時にISTUのシステムが11MBまでファイルサイズを縮小化してくれたわけですが、実際のデータ通信量はその6倍になっています。なお、ISTUの動画プレーヤーは、画質を設定するオプションはありません。ブラウザでの表示サイズを変更しても、通信量に変化は見られませんでした。今回テストしたケースでは、受講生が動画ファイルをダウロードできれるようになっていれば、ISTU側も受講生側も通信負荷を減らすことにつながります。

ビットレートおよびフレームレートとストリーミング通信量の関係

ビットレートやフレームレートを下げてビデオの質を落としても、ストリーミング再生時の通信量を大きく減らすことにはつながっていないことがわかりました。実際にこれらのパラメータと通信量の関係はどのようになっているのでしょうか。そこで先ほど使用した高画質動画(3分8秒、1920×1080、60 fps、1.3 GB)を変換した次のような動画を用意し、Google Driveの動画プレーヤーで再生した時の通信量を測定してみました。再生時のプレーヤーでの画質は720です。

  • フレームサイズ: 1280×720
  • フレームレート: 15 fps、25 fps、30 fps
  • ビットレート: 384 kbps、512 kbps、768 kbps、900 kbps、1,000 kbps、1,200 kbps、2,000 kbps
  • オーディオ: なし

フレームサイズは全て同じとし、音声データの影響を受けないようオーディオのない動画としています。測定結果は次の通りです。


フレームレート ビットレート ファイルサイズ 受信データ量
  15 fps    408 kbps    9.21 MB    42.1 MB
  25 fps    404 kbps    9.18 MB    43.2 MB
  30 fps    405 kbps    9.23 MB    44.4 MB

  15 fps    541 kbps    12.1 MB    43.7 MB
  25 fps    540 kbps    12.2 MB    44.6 MB
  30 fps    540 kbps    12.2 MB    46.3 MB

  15 fps    795 kbps    17.9 MB     47.0 MB
  25 fps    807 kbps    18.2 MB     49.0 MB
  30 fps    808 kbps    18.2 MB     49.5 MB

  15 fps    981 kbps    12.1 MB    46.7 MB
  25 fps    915 kbps    12.2 MB    48.7 MB
  30 fps    908 kbps    12.3 MB    48.1 MB

  15 fps    1030 kbps    23.1 MB    48.8 MB
  25 fps    1037 kbps    23.3 MB    51.2 MB
  30 fps    1046 kbps    23.6 MB    51.6 MB

  15 fps    1235 kbps    27.7 MB    51.8 MB
  25 fps    1235 kbps    27.8 MB    52.6 MB
  30 fps    1241 kbps    27.9 MB    51.7 MB

  15 fps    2041 kbps    45.8 MB    53.2 MB
  25 fps    2050 kbps    46.0 MB    56.0 MB
  30 fps    2051 kbps    46.1 MB    56.9 MB


動画の長さとフレームサイズが固定のため、ビットレートと動画ファイルサイズが比例しています。受信データ量もビットレートの増加に伴い増えますが、とてもゆるやかな増加に留まっています。同じビットレートで比較した場合、フレームレートには強い依存性はないようです。ストリーミング再生のみであれば、ビットレートを大きく落として質の悪い動画に変換するメリットは少ないという結果でした。ストリーミングのデータ量を減らすにはフレームサイズ(解像度)を小さくする方が効果的ということになります。

まとめ

  • ストリーミング再生時の通信量は、動画ファイルのサイズではない。
  • ストリーミング再生時にプレーヤーの解像度を落とすことで通信量を減らすことができる。
  • 動画のファイルサイズを小さくする工夫をしても、ストリーミング再生時には数倍のデータ量となることがある。この場合は、直接ダウンロードした方が良い。

 添付ファイル     - [0]


 コメント追加