記事ディレクトリ
序文
この記事では、ストリーミングメディアとそのライブ配信に関する知識を中心に、比較的簡単に理解できる内容を中心に解説しています。
1. ストリーミングメディア
1. 基本的な考え方
ストリーミング メディアはストリーミング メディアとも呼ばれ、販売者がビデオ送信サーバー (例: vlc) を使用してプログラム (例: xxxx.mp4) をデータ パケットとして送信し、ネットワークに送信することを意味します。ユーザーが解凍装置でデータを解凍すると、送信前と同じようにプログラムが表示されます。
いわゆるストリーミングメディアとは、ストリーミング配信によりインターネット上で再生されるメディア形式を指します。オーディオ、ビデオ、マルチメディア ファイルなど。ストリーミング メディアは、再生前にファイル全体をダウンロードするのではなく、コンテンツの先頭部分のみをメモリに保存します。ストリーミング メディアのデータ ストリームは、いつでも送信され、再生されますが、最初に多少の遅延が発生します。ストリーミング メディア実装の鍵となるテクノロジーはストリーミング伝送です。ダウンロードと再生を同時に実現します。
2. ストリーミング
オーディオやビデオなどのマルチメディア情報をインターネット上で送信する従来の方法は、情報を完全にダウンロードしてから再生することでしたが、ダウンロードには数分から数時間かかることもありました。
ストリーミングメディア技術を利用することで、ストリーミング伝送を実現し、サーバーからユーザーのコンピュータに音声、画像、アニメーションを連続的かつ中断なく送信することができ、ユーザーはファイル全体がダウンロードされるのを待つ必要はなく、数個のファイルをダウンロードするだけで済みます。秒以上10秒以上の視聴開始遅延。オーディオ、ビデオなどがユーザーのマシンで再生されている間、ファイルの残りの部分はサーバーからダウンロードされ続けます。
ネットワークプロトコル: http、rtmp、rtsp、rtp/rtcp、udp、tcp
ストリーミングを実装するには、リアルタイム ストリーミングとプログレッシブ ストリーミングの 2 つの方法があります。
- シーケンシャル ストリーミング: シーケンシャル ダウンロード。ユーザーはファイルをダウンロードしながらオンライン メディアを視聴できます。特定の時点では、ユーザーはダウンロードされた部分のみを視聴でき、まだダウンロードされていない前の部分にジャンプすることはできません。シーケンシャル ストリーミングはリアルタイム ストリーミングとは異なります。 、ユーザーの接続速度に基づいて送信中に調整されます。
- Nginx、Web サーバー、mp4 ファイル/flv/mov/mkv/ts/rmvb、http
- リアルタイム ストリーミング: メディアをリアルタイムで表示できるように、メディア信号の帯域幅がネットワーク接続と一致していることを確認します。
- RTP/rtcp
3. ストリーミングメディアテクノロジーの原理
ストリーミングの実装にはキャッシュが必要です。
ストリーミング伝送の実装では、一般的に制御情報の伝送にはHTTP/TCPが使用され、リアルタイム音声データの伝送にはRTP/UDPが使用されます。
通常、キャッシュは循環リンク リスト構造を使用してデータを保存するため、キャッシュに必要な容量は大きくありません (gop:ibbpbbpbbp...)。再生されたコンテンツを破棄することで、ストリームは空いたキャッシュ スペースを再利用できます。後続の未再生コンテンツをキャッシュします。
4. ストリーミングメディア送信モード
ストリーミングメディアがマルチメディアデータのリアルタイム再生を実現できるのは、専用のネットワーク制御プロトコルとデータ伝送機構を採用しているためです。サーバーには専用のストリーミング メディア パブリッシング システムがあり、クライアントには専用のプレーヤーがあり、どちらの部分もデータ キャッシュ領域を通じてデータをキャッシュする必要があります。
5. H.264ストリーミングメディア伝送システムの枠組み
2. ライブ配信
1. ライブブロードキャストで使用されるストリーミングメディアプロトコル
RTMP、Real Time Messaging Protocolの頭字語。このプロトコルは
TCP に基づいており、RTMP 基本プロトコル、RTMPT/RTMPS/RTMPE、およびその他のバリアントを含むプロトコル スイートです。RTMP はリアルタイム データ通信用に設計されたネットワーク プロトコルで、主に Flash/AIR プラットフォームと RTMP プロトコルをサポートするストリーミング メディア/インタラクティブ サーバー間のオーディオ、ビデオ、およびデータ通信に使用されます。
RTMP は Flash に基づいており、iOS ブラウザでは再生できませんが、リアルタイム パフォーマンスは HLS よりも優れています。
HLS、HTTP Live Streaming (HTTP ライブ ストリーミング テクノロジ)、Apple の動的ビット レート適応テクノロジ。主に PC や Apple 端末上のオーディオおよびビデオ サービスに使用されます。m3u(8) インデックス ファイル、TS メディア フラグメント ファイル、キー暗号化文字列ファイルが含まれます。
2. 生放送のモジュール分割
- ビデオ録画終了: 一般的には、コンピュータのオーディオおよびビデオ入力デバイス、または携帯電話のカメラまたはマイクを指しますが、現在は携帯電話のビデオが主です。テクノロジー:webRTC(目的:H5ビデオ録画)
- ビデオ プレーヤー: コンピューター上のプレーヤー、携帯電話上のネイティブ プレーヤー、または H5 ビデオ タグなどを使用できます。現在、携帯電話上のネイティブ プレーヤーがメインです。テクノロジー: HLS プロトコルまたは RTMP プロトコル (目的: ビデオ再生)、ffmpeg (目的: RTMP プロトコル使用時のモバイルビデオデコード)
- ビデオサーバー: 通常は nginx/s rs/。..サーバーは、ビデオ録画側から提供されるビデオ ソースを受け入れ、ビデオ再生側にストリーミング サービスを提供するために使用されます。テクノロジー: RTMP プロトコル (目的: ビデオ ストリームのアップロード)、nginx rtmp-module または SRS (simple-rtmp-server) (目的: ストリーミング サーバー)
3.ビデオライブブロードキャストプロセス
ライブビデオのプロセスは、
収集 -> 処理 -> エンコードとカプセル化 -> サーバーへのプッシュ -> サーバー ストリーム配信 -> プレーヤー ストリーム再生
①. ストリームをサーバーにプッシュする
プッシュ プロトコルには主に次の 3 つがあります。
- RTSP (Real Time Streaming Protocol) : リアルタイム ストリーミング プロトコル、サウンドまたはビデオの制御に使用されるマルチメディア ストリーミング プロトコル。
- RTMP (Real Time Messaging Protocol) : リアルタイム メッセージング プロトコル。Flashプレーヤーとサーバー間のオーディオ、ビデオ、およびデータ送信のために Adobe によって
開発されたオープン プロトコル。 - HLS (HTTP Live Streaming) : Apple によって実装された HTTP ベースのストリーミング メディア送信プロトコルです。
RTMP プロトコルは TCP に基づいており、リアルタイム データ通信用に設計されたネットワーク プロトコルで、主に
Flash/AIR プラットフォームと RTMP プロトコルをサポートするストリーミング メディア/インタラクティブ サーバー間のオーディオ、ビデオ、およびデータ通信に使用されます。このプロトコルをサポートするソフトウェアには、Adobe Media Server/Ultrant Media
Server/red5 などが含まれます。
これには 3 つのバリエーションがあります。
- RTMP は、ポート 1935 を使用して TCP 上で動作するクリア テキスト プロトコルです。
- RTMPT は HTTP リクエストにカプセル化されており、ファイアウォールを通過できます。
- RTMPS は RTMPT に似ていますが、HTTPS 接続を使用します。
RTMPは現在主流のストリーミングメディア伝送プロトコルであり、ライブブロードキャストの分野で広く使用されており、市場に流通しているライブブロードキャスト製品のほとんどがこのプロトコルを採用していると言えます。
②. サーバーストリーム配信
ストリーミング メディア サーバーの役割は、ライブ ストリームのリリースおよび再ブロードキャスト配信機能を担当することです。
しかし、私はプラグインを通じてライブブロードキャスト機能を拡張できる優れた無料WebサーバーであるNginxを選択しました。
Nginx、srs、crtmpserver、
Live555、ダーウィン、
webrtc
私のqq:2442391036、コミュニケーションへようこそ!