皆さん、こんにちは。Stop Refactoring チャンネルへようこそ。
この号では、ライブ ストリーミング テクノロジーについて説明します。
ライブストリーミングの動作原理、ストリーミングメディアサービスの役割、プッシュ/プルストリーミング、ライブCDNなどを紹介します。
ここで特に説明する必要があるのは、ライブ ブロードキャストとは、通常のライブ ブロードキャスト プラットフォームのような 1 対多のライブ ブロードキャストを指しますが、ビデオ会議の場合は別のシーンです。
次の順序で説明します。
1. ライブストリーミングの動作原理
2. ライブソースデータの取得
3. ライブトランスコーディング
4. ライブストリーム出力とライブCDN
ライブストリーミングの仕組み
一般に、ライブ ストリーミングは、ビデオ ファイルのトランスコーディングと同じように機能します。
前回のビデオ トランスコーディングの動作原理で紹介したビデオ トランスコーディングの完全な動作原理は、カプセル化解除 -> デコード -> 処理 -> エンコード -> カプセル化というストリーミング プロセスです。
ライブ ストリーミングとビデオ ファイルのトランスコーディングの最大の違いは、カプセル化形式です。ライブ ストリーミングでは、ライブ ブロードキャスト ソースの受信とライブ ブロードキャスト出力の最初と最後に特別な処理が必要です。
一般に、ライブブロードキャストでは、ライブブロードキャストソースからの映像データをネットワークから受信し、処理した映像データをネットワークに出力する必要があります。
したがって、ライブブロードキャストシステムでは、ビデオトランスコーディングプログラムに加えて、2 つのストリーミングメディアサービスも必要です。
1 つはライブ ソース データの取得に使用され、トランスコーディング プログラムはこのストリーミング サービスからビデオ ストリームを取得して処理します。
もう 1 つは、ユーザーがビデオ ストリームをプルして視聴するために使用され、トランスコーディング プログラムは処理されたビデオ データをこのストリーミング サービスに継続的にプッシュします。
ストリーミング メディア サービスの具体的なソフトウェアは、ビデオ ストリーミング プロトコルによって異なりますが、ライブ ストリーミング プッシュ プロトコルとライブ視聴プロトコルが同じ場合、使用できるストリーミング メディア サービスは 1 つだけです。
ちなみに、ビデオ ストリーム データのプルとプッシュは、ストリームのプルとプッシュともよく言われます。ストリーミング サービスはプッシュまたはプルでき、プルとプッシュのアドレスさえもまったく同じであることに気づく場合があります。
本質的に、ストリーミング メディア サービスは、ビデオ ストリーミング データの転送ステーションです。ストリーミング メディア サービスは、ビデオ ストリーミングのデータの一部をリアルタイムでメモリに保存し、時間の経過とともにデータを周期的に上書きします。
したがって、一般的なシナリオでは、ライブ ブロードキャストの動作原理は、ライブ ストリーム データの取得 -> ライブ トランスコーディング -> ライブ ストリーム データの出力のように単純化できます。
ライブソースデータの取得
次に、ライブ素材データの取得について詳しく説明しますが、ライブ素材データはネットワークを介して送信されるのが一般的であるため、映像データの転送先としてストリーミングメディアサービスが必要となるのが一般的です。しかし実際には、特定のプロトコルやアプリケーションのシナリオが異なるため、いくつかの違いがあります。
たとえば、ライブ ブロードキャスト プラットフォームでのライブ ブロードキャストのシナリオ、つまり一般的なシナリオでは、アンカーはビデオ ストリームをライブ ブロードキャスト プラットフォームのストリーミング メディア サービスにプッシュする必要があります。プロトコルは通常 RTMP で、ストリーミング サービス ソフトウェアには SRS、rtmp-server プラグインを備えた Nginx などを使用できます。
再放送シナリオの場合、自身のシステムのストリーミング メディア サービスは受信に参加する必要はありません。ビデオ トランスコーディング ソフトウェアは、相手のビデオ ストリームを直接プルできます。実際には、相手のビデオ ストリーム データを直接プルします。相手側のシステムのストリーミング メディア サービス。
このときのプロトコルとしては、RTMP、HLS、HTTP-FLV、RTSPなどが考えられます。ただし、プロトコルが何であっても、独自のビデオ トランスコーディング ソフトウェアがこのプロトコルをサポートしている限り、ストリーミング メディア サービスを提供するのは相手側のシステムです。
もう 1 つのシナリオは、ファイル ライブ ブロードキャストです。これは、ビジネスでは録画およびブロードキャストとも呼ばれます。実際、ライブ ブロードキャスト ソースはビデオ ファイルです。このシナリオでは、ストリーミング メディア サービスが受信に参加する必要はなくビデオ コード変換ソフトウェアのみが必要です。再生時間に合わせてゆっくり読んでください。
ライブトランスコーディング
ライブトランスコーディングはビデオトランスコーディングでもあり、ここではウォーターマーク、HD/スムーズ変換、ビットレート制限、ライブ録画などをライブストリームに追加できます。
実際、ライブ トランスコーディング プログラムはビデオ ファイル トランスコーディング プログラムと大きな違いはなく、高精細/スムーズなトランスコーディング、ビット レート制限などのいくつかの単純な機能は、ストリーミング メディア サービス ソフトウェアを設定することで実現することもできます。
ちなみに、トランスコード処理が必要なく、セキュリティ権限やその他の設定がない場合は、ストリーミング サービスからビデオを直接プルして視聴することができ、プッシュ URL と視聴 URL は通常同じです。
ライブ ブロードキャスト コード変換プログラムを開発する意義は、ライブ カウントダウン、信号中断時の自動フレーム補完、ブロードキャスト ガイド/カルーセル、ピクチャー イン ピクチャーなどの高度な機能にあります。この部分はライブ ブロードキャスト システムの技術的な核心であり、結局のところ、ストリーミング サービス ソフトウェアは一般的にプロトコルに束縛されており、既成のものです。
もちろん、この部分の実装は非常に複雑ですが、これはオーディオおよびビデオ処理の中核となる内容であり、これらの内容については、具体的な問題に応じて後続のコンテンツで詳細に説明するため、ここでは説明しません。
ライブストリーミング出力とライブCDN
ビデオ ソースを処理した後、ビデオ データをストリーミング メディア サービスに出力する必要があり、ユーザーはストリーミング メディア サービスからビデオ ストリーム データを取得して視聴できます。
ライブ ストリームを視聴するためのプロトコルは、一般的に HTTP-FLV、HLS などです。遅延要件が高い場合は、RTMP、WEBRTC などが一般的に使用されます。RTMP プロトコルは現在、主流のブラウザではサポートされていないことに注意してください (Flash は無効になっています)。
また、ユーザーはストリーミング サービスのビデオ ストリームを直接取得して視聴することもできますが、これは多くの帯域幅を占有し、ビデオのビット レートの単位は帯域幅の単位と同じです。ビデオストリームは2Mbps、サーバーの帯域幅は100Mbpsで、理論的には50人の視聴をサポートします。
視聴者数が多い場合は、ライブ CDN を使用する必要があります。実際、ライブ CDN はストリーミング サービスとみなすこともできますが、リクエストの圧力を共有するために多くのエッジ ノードが存在します。
ライブ CDN が使用されている場合、ビデオ トランスコーディング ソフトウェアは、通常は RTMP プロトコルを介してビデオ ストリーム データをライブ CDN に直接出力し、CDN サービスにプッシュできます。
もちろん、アクティブ CDN サービスもありますが、アクティブ CDN サービスの使用はお勧めできません。アクティブ プル CDN サービスでは、複数のサーバーが同時にソースに戻る可能性があり、必要な帯域幅を正確に見積もることが困難になるためです。
さらに、ライブ CDN は通常、表示プロトコルに自動的に切り替える機能を提供し、RTMP、HTTP-FLV、WEBRTC、HLS などのプロトコルの表示アドレスを提供するのが一般的です。
ただし、一般的なライブ CDN は、高解像度やスムーズな変換などのトランスコーディング サービスを提供していないため、通常、追加のライブ トランスコーディング クラウド サービスまたは独自のビデオ トランスコーディング ソフトウェアが必要です。
なぜなら、視聴プロトコルの変換は実際にはビデオのトランスコーディングにおける再カプセル化、つまりカプセル化解除の直後の再カプセル化であり、パフォーマンスをそれほど消費しないからです。ただし、トランスコーディングはパフォーマンスに非常に負荷がかかるため、ビデオトランスコーディング用のクラウド サービスは時間単位で料金が発生するのが一般的です。
概要
この号では、ライブ ブロードキャストの動作原理を紹介し、多くのプロトコルについて言及します。ライブ ブロードキャストで一般的に使用されるプロトコルについては、次号で詳しく説明します。