技術解説 ·

動画のトランスコードの仕組みと、24時間配信で重要な理由

動画のトランスコードの仕組みと、24時間配信で重要な理由

この記事のポイント

  • トランスコードは、動画の解像度、フレームレート、コーデックを統一する変換処理です。さまざまなソースのファイルを予測どおりに再生できるのは、この処理のおかげです。
  • 24時間ループは、統一されていない動画の影響を特に受けやすい配信です。クリップが際限なく続けて再生され、不具合に気づいて直す人がその場にいないからです。
  • すべての動画を最初に一度だけ正規化しておけば、ライブ配信を開始する瞬間の再エンコードを避けられます。クリップの切り替わりでのカクつきやクラッシュは、たいていこの再エンコードが原因です。

スマートフォン、画面録画ツール、編集アプリで作った動画を同じプロジェクトにアップロードしたことがあるなら、うまくかみ合わないことがあると気づいたかもしれません。解像度もフレームレートも違い、ときにはコーデックがまったく別のこともあります。これを解決するのがトランスコードという工程で、24時間のライブループにとっては、あれば便利というおまけではありません。何か月もトラブルなく動き続ける配信と、特定のクリップに来るたびにカクつく配信を分けるのが、まさにこの工程です。

トランスコードの本当の意味

トランスコードとは、動画ファイルをあるフォーマットから別のフォーマットへ変換する処理です。一般的には、解像度(たとえばすべて1920x1080)、フレームレート(すべて30fps)、コーデック(互換性の高いH.264がよく使われます)を正規化し、どのファイルも後の工程で同じようにふるまうようにします。これは単なる「ファイル形式の変換」とは別物です。2つの.mp4ファイルは、拡張子が同じでも、中身のコーデック、ビットレート、フレームレートがまったく異なる場合があります。

トランスコードをしないまま、24fpsの4Kファイルの直後に60fpsの720pファイルを同じ連続した配信で流すと、目に見えるカクつきや一瞬の黒画面が発生したり、最悪の場合はエンコーダーがクラッシュしたりします。配信を送り出しているソフトウェアが、配信の途中で出力設定を調整し直さなければならないからです。

単発の動画よりも24時間ループで重要な理由

単発でアップロードした動画は一度見られるだけなので、不具合があっても、その1回の視聴体験が悪くなるだけで済みます。24時間ループは、配信が続くかぎり同じクリップを際限なく続けて再生します。つまり、次のようなことが起きます。

  • 不一致がすべて繰り返される。 特定の2つのクリップの切り替わりで起きるカクつきは、一度では終わりません。ループが続くかぎり、プレイリストがそこに来るたびに毎回発生します。
  • 再起動するために見ている人がいない。 24時間配信はそもそも無人で動くことが前提です。人が見守っている配信なら数秒で気づいて直せるクラッシュも、無人の配信では何時間も止まったままになることがあります。
  • プレイリストは時間とともに増えていく。 さまざまなソースから動画を追加するほど、少なくとも1本のクリップのフォーマットが合わない可能性は高まっていきます。

2つの対処法:アップロード時か、ライブ配信の開始時か

トランスコードを行うタイミングは2つあり、その違いが重要です。

  1. アップロード時に一度だけ。 すべての動画は、ライブラリに追加された時点で決まった目標フォーマットに正規化されます。プレイリストに並べる前に、解像度、フレームレート、コーデックが確定します。トランスコードの負荷は最初に一度だけで、二度とかかりません。
  2. ライブ配信を開始するたびに毎回。 配信を始めるたびに、プレイリスト全体をその場で再エンコードします。この方法でも動きますが、ライブ配信を開始するたびに毎回トランスコードの負荷がかかり(トランスコードが失敗するリスクも毎回あり)、同じプレイリスト内のクリップ同士の不一致を防ぐ効果もありません。

Loopcastは1つ目の方法を採用しています。各動画はアップロード直後にバックグラウンドで一度だけ正規化されるため、ライブループに入る頃には、リレーはその場で再エンコードするのではなく、すでに統一されたクリップをつなげるだけです。動画のトリミング位置を編集したときに、配信全体に影響するのではなく短時間の再正規化が走るのもこのためです。新しい処理が必要なのは、変更した1本のクリップだけです。

実際にはどう見えるか

トランスコードが行われている様子は、ふだん目にすることはありません。動画をアップロードしたあとにバックグラウンドで実行され、動画はプレイリストに追加できる状態になるまで、少しの間「処理中」と表示されます。ここから得られる実用的な教訓は、何か設定が必要だということではありません。動画がすぐに配信できる状態になると期待せず、公開前に余裕をもってアップロードしておくべき理由であり、最初に一度だけトランスコードするサービスのほうが、そうでないサービスより長時間の無人配信で安定しやすい理由でもあります。

よくある質問

トランスコードで画質は落ちますか?

適切に設定されたトランスコードは、視聴者に画質の低下がわからないほど十分なビットレートと解像度を目標にします。特に、YouTube自体がアップロードや配信されたものをすべて再圧縮するためです。ここでのトランスコードの目的は統一性であり、圧縮そのものが目的ではありません。

アップロードしたばかりの動画が、すぐに使える状態ではなく「処理中」と表示されるのはなぜですか?

それがトランスコードの工程です。動画がバックグラウンドで統一されたフォーマットに正規化されています。処理が終わると、プレイリストに追加できるようになります。

2本の動画の解像度とフレームレートがすでに同じなら、それでもトランスコードは必要ですか?

たいていは、少なくとも最初の1回は必要です。解像度とフレームレートが一致していることは必要条件ですが、それだけでは十分ではありません。コーデックの設定、キーフレームの間隔、音声のフォーマットは、ファイルのプロパティを見ただけではわからない形で異なっている場合があります。そのため、すべてのアップロードを同じ方法で正規化しておけば、見た目の一致が完全な一致だと思い込まずに済みます。