ビデオプロトコルをストリーミングすることは、ネットワーク・トランスポート・プロトコルです。
基本コンセプト
ビデオ技術の利用規約
-
名詞のシリーズ:AVI、MPEG、RMVB、MP4、MOV
-
名詞シリーズII:H.261、H.262、H.263、H.264、H.265。H.264を中心に
-
MPEG-1、MPEG-2、MPEG-4、MPEG-7:3つの用語の一連。
ビデオ:写真のシリーズ。
フレーム:画像は1です。
フレームレート:毎秒、どのように多くの写真です
ピクセル:ピクセルRGB、8ビット毎。画素の良い数の画像。
毎秒のビデオの種類、どのくらい?
30×1024×768×24 = 566,231,040Bits = 70,778,880Bytes
動画を毎分どのくらい?4,246,732,800Bytes、G 4が既にあります。
コード:少数のビットは、ビデオを保存すると、圧縮処理です。
空間的冗長性、時間的冗長性、視覚的な冗長性、冗長コーディング:ビデオと画像は圧縮の機能の一部を使用しています。
基本的に少ないエネルギーでより多くの情報を伝えます。これは、シャノンの情報理論に多少似ています。
ビデオエンコーディング2校
-
ITUのVCEG
-
ISOのMPEG
-
ITU-TとMPEG共同開発H.264 / MPEG-4 AVC
符号化の後、特定の形式で保存バイナリデータ、ファイルにバイナリデータに元の画像フレームは、名詞のシリーズです。
その後、流れ:アンカークライアントサーバーからのビデオストリームを受信します
トランスコーディング:1つの符号化形式からスイッチを別のエンコード形式に。
プルストリーム:ビデオストリームを引っ張るビューアクライアントからサーバー
デコード:観客クライアントバイナリストリームを、額縁に、映像からなります。
ブロードキャストネットワーク、データ・ストリームの伝送
我々は今、それがネットワークの実際の例ネットワークへのアンカーからのビデオショットをアップロードする方法についてです、そしてどのようにネットワークから各コンピュータの画面上でファンに。
1は、ビデオカメラは、エンコードされたビデオ符号化プロトコル、アンカーを下にキャプチャします、それらが送られたHTTPプロトコルパッケージを経由して、バイナリバイトストリームに変換します。
図2は、プロトコルコーディング同じビデオを持っているサーバ側は、TCPプロトコルは、パケットバッファから解析またはトランスコーディングを行うために、別のビデオコードフォーマットの形式に変換されます。再生装置が広くクライアントによって使用される異なるため。
3、クライアント側はサーバーからのビデオストリームを要求します。このプロセスは、テストサーバー、サーバーは、クライアントサービスの膨大な数と同じ時間にすべきです。その後、映像配信ネットワーク、ビデオクライアントが近いサーバにプリインストールされが必要です。
人々はナショナルデーのパレードを見ている場合は、遼寧省の視聴者は、サーバー遼寧省地域からの映像は、ビデオストリームを引っ張って確認してください。広州では、観客は広州領域サーバー上のビデオストリームを見ています。
図4は、コンピュータビューアまたは表示ビデオストリームの後にネットワークから引き出され、またはバイナリバイトを確認するために復号されます。
以下、この図のようなライブ全体のプロセス:
映像伝送処理の分解
コード:バイナリへのビデオの特定の動作を、映像の大きさを減少させるために、ビデオシーケンスは、3つのフレームに分割されています。
-
Iフレーム、キーフレームは完全な画像は、我々は、このフレームデータのデコードを完了する必要があります。
-
Pフレーム、フォワード差、キーフレームと前フレームとの間の差で表されるフレームに符号化予測。
-
Bフレーム、双方向予測符号化フレーム補間。このフレームは、前後のフレームの差を表します。Bフレームをデコードするために、画像の前後の画像は、現在のフレームの前後の画面データによって、所望の最終的な画像を得ることが重ね合わさ。
空間符号化を容易にするために、送信する際に、各フレームは多数個に分割され、各ロットはマクロブロックに分割され、各マクロブロックは、多数の小片に分割されています。
これらは、小片に直接発行することができない、またはそれ以外の混乱に分けられ、クライアントは絵が不可能で回復したいと思います。しかし、どのようにこれを確実にしますか?
ビデオがたくさんあるフレーム板、フレームの多くに分割され、マクロブロック、サブブロックがあります。これらのサブブロックは、配列のこれらのサブブロックすることができるようにする方法が必要その後、シーケンスを構成します。それらがネットワークの他端にTCPプロトコルを介して送信することができ、そしてビデオに復元することができることを確実にします。アイデアは、シートフレームパッケージ化することであるNALユニット(のNALUを)。
NALUの各々は、その識別子、NALUヘッダとペイロードの開始。
メインコンテンツタイプNALタイプの内部NALUヘッド。
-
このような画像サイズ、ビデオフォーマットなどの全ての情報の画像の配列を含むSPS、シーケンスパラメータセット、。
-
PPS、ピクチャパラメータセットは、画像の種類、シリアル番号等を含む、画像のすべての関連情報片を含みます。
ビデオからのビデオストリームをデコードし、これら2つのパラメータが必要です。耐障害性を確保するために、各Iフレームの前で、私は、これら2つのパラメータを渡すであろう。
全体のビデオフォーマットは、このです。ビデオフレームのロットに分割することができ、一つのフレームは多数個に分割されてもよく、各部分は、NALUの内部に配置され、挿入されるように、各Iフレームの前の最初のシートとの間のNALU識別子特別な開始によって分離されていますSPSとPPSは、最終的に長いシーケンスNALUを形成し、別途NALUを保存します。
プラグフロー:パッケージデータは、ピアに送信されたストリーム
どのようにバイナリストリームのネットワークパケットにパッケージ化は、ここで必要なRTMPプロトコルを送りました。
RTMPプロトコルは、リアルタイムの情報伝送プロトコル、マルチメディア・データ・ストリームの多重伝送を解決するために提案Adobe社、および業務委託契約です。これは、TCPプロトコルの上に構築され、それは1つが、バージョン番号、タイムスタンプで、二つのことを確実にするために主にあります。
RTMPプロトコルは、TCP接続に同じ必要性に似ています。状況の送信者と受信者を見つけるために来リアルタイムの情報を受信します。スミアの二つは、メッセージバーの上に出てくることはできません。
何をすべきかを事前に判断するために、リアルタイムでメッセージを送信するには?RTMPプロトコルだけを取得するために6つのメッセージを送って、それがどのように行われるかを確認します。下図のように:
1は、最初のクライアントがC0を送信し、他の応答を待たずに彼のバージョン、直接再発C1は、そのタイムスタンプを示していると述べました。
図2に示すように、サーバは一致が切断されていない場合、S0を返す独自のバージョン番号を表示するには、C0を受け取ります。S0を送信した後、サーバーはそのタイムスタンプを示し、S1を送信し続けます。
3、クライアントは、タイムスタンプが自身がのサービス側を受け取っ示し、ACKにS1、サーバーの背面を受けます。
4.同様に、サーバはC1を受け、クライアントのその領収書を示し、タイムスタンプ、クライアントにACKを返送されます。
これは、ハンドシェイクは完了です!
ちょうどハンドシェーク接続が確立されて完了するために、双方はまた、チャンクのブロックのサイズ、ウィンドウサイズとして、いくつかの制御情報を渡す必要があります。
しかし、また、(公開)このストリームの流れを介してデータのリアルタイム伝送ストリームを作成し、プッシュするために、それはNALUを置くことです。メッセージ、また、RTMPパケットパッケージとして知られているメッセージを送信します。このようなメッセージ形式。
大きなメッセージブロックの再送は、低帯域幅の場合には小さな、缶となり、ネットワークの輻輳を低減します。
データストリームの送信処理を次のように
以下は、視聴者クライアントを描画処理フローであります:
物流ネットワーク
サーバへの大観衆の圧力によって引き起こされる問題を解決流通ネットワークサーバ、その下。
中心とエッジ配信ネットワークは、2つの層に分割されています。エッジ層のサーバーは、国全体、および主要キャリア間で展開され、ユーザーは非常に接近しています。センターは、ストリーミングメディアサービスのクラスタでコンテンツを転送する責任があります。
インテリジェントな負荷分散システムは、ユーザの位置情報に応じて、プッシュ/プルサービスフローをユーザーに提供するために、最も近いエッジサーバーを選択します。
このメカニズムは、DNS、HTTPDNS、CDNやその他の技術を必要とするだろう。