ライブストリーミングで遅延が発生する原因とは?
動画配信の処理ごとに解説


動画のライブストリーミングにおいて「遅延」の発生はユーザーの離脱に繋がる為、「遅延」をなくすことが重視されていますが、そもそも「遅延」は、どこでどのように発生するのでしょうか。
本記事では、配信された動画が視聴者に届くまでの各プロセスごとに、遅延が発生する箇所や低遅延ライブストリーミングを実現するポイントを見ていきましょう。

「遅延」とは

ライブストリーミングの世界で使われる「遅延」とは、撮影された映像が視聴者の画面に表示されるまでの時間を意味します。
もちろん、動画が視聴者に届くまでにはデータの符号化や圧縮、再符号化など、あらゆる種類の変換が行われます。

配信された動画が視聴者に届くまでのプロセス

映像の取り込み

映像の取り込みでは、カメラによって取り込まれた光をデータとして配信可能なピクセルに変換し、動画ファイルの形式に圧縮する処理を行います。この処理全体で、一般的には0.75ミリ秒かかると言われています。

音声の取り込み

基本的な処理は映像の取り込みと同じですが、音声取り込みの場合は、音の波を音の信号に変換、バイト単位で保存し、音声ファイル形式に圧縮します。


サーバーへのストリーミング


プロトコル

取り込まれた音声と映像は、ネットワークを介して配信できるよう、ストリーミング用のプロトコルに変換されます。
低遅延で動画を配信するために設計されているRTMPは、現在も多くのライブ配信アプリケーションで採用されています。
Red5 ProでもRTMPをサポートしていますが、RTSPやWebRTCといった他のプロトコルもサポートしており、RTMPと同レベルの低遅延配信が可能です。
ちなみに、インジェストでのRTMPは段階的に低遅延ストリーミングを実現できる新しい技術に置き換えられていくのではないかと予測されます。
RTMPの代替として注目されている技術の一つに「WebRTC」(Web Real-Time Communications)があります。
WebRTCはブラウザ間でのリアルタイムコミュニケーションを実現する為に設計されており、デフォルトでDTLS/SRTPによる暗号化プロトコルを利用しており今後利用が拡がっていくのではないかと思われます。
また、ハイビジョン社のストリーミング配信技術であるSRTも、UDPをベースにした有望な技術で、今後どのように発展していくのか気になります。

ネットワーク

ストリーミング用のプロトコルに変換されたデータは、ネットワーク内で転送されます。
ネットワーク接続、インターネットルーティング、サーバーのネットワークなど、セクションごとに様々な処理が行われる為、しばしば遅れが発生します。

サーバ側の処理

サーバー側の処理では、潜在的に16ミリ秒~1秒の遅延が潜在的に発生する可能性があると言われています。
その為、サーバー側での処理を制御するスレッディングモデルとコードを効率的に実行する為の最適化は重要です。
また、サーバー側の処理で音声と映像の両方のコード変換が必要な場合もあります。
GoogleとFirefoxはWebRTCを介したAACを許可しないため、それらのストリーミングで音声を再生するには、Opusへのコード変換が必要となります。Red5 Proの場合、未加工のh.264コーデックを様々なトランスポートプロトコルに再パッケージ化します。


クライアントへのストリーミング


プロトコル

サーバー側の処理と基本的には同じですが、クライアント側では符号化ではなくデコードを行います。
ビデオコーデックおよび音声コーデックを処理できるように、エンコードされたデータを解凍する必要があり、これには約0.75ミリ秒を要すると言われています。

ネットワーク

こちらもサーバーへのストリーミングと同様ですが、逆方向になります。

クライアント側オーディオレンダリング

音声ファイルは音に変換され、スピーカーに送られます。

クライアント側ビデオレンダリング

画面に映像を表示させたり、スピーカーで音を再生することは、簡単なようですが複雑なプロセスです。
このプロセスでは、配信データのデコード及び、ビデオカード(グラフィック・カード)を介したレンダリング(場合によってはソフトウェア・レンダリング)によって意図した映像を正しく表示させます。
この過程におけるそれぞれのステップで少しずつ時間がかかります。各ステップでは数マイクロ秒といった少ない時間が加算されていくことで、最終的に遅延が発生します。


低遅延のライブストリーミングを実現するために


動画ストリーミングの背後にあるこうした全てのプロセスで遅延をゼロにすることは、(少なくとも今のところ)現実的ではありません。
遅延を減らすために各プロセスを自力で最適化していくのはなかなか難しいですが、遅延を減らすために設計されたツールを活用することで、動画ストリーミングでの遅延を最小限に抑えることは可能です。

Red5 Proは500ミリ秒以下のライブストリーミングを実現するツールとして多くの実績を上げています。
低遅延の動画ストリーミングをご検討中の方は一度ご相談ください。>>
コラム「低遅延への道」