Silverlightでのスムーズストリーミング

このトピックでは、SilverlightのIISでスムーズストリーミングを構成する方法については説明しません。ビデオ再生のコードの例を示しません。 私の目標は、SilverlightでのSmooth Streamingの動作、ストリーミングサーバーとしてのIISの欠如、Microsoftがこの問題をどのように解決したかを伝えることです。 インターネットでビデオを放送するこのアプローチの生活の中で可能な適用性について、habrasocietyからフィードバックを受け取りたいです。



ビデオの準備からエンドユーザーへのブロードキャストまでのプロセス全体を3つのステップで紹介しました。



最初のステップ。



ビデオの準備。 高品質のビデオクリップは特別な方法で変換されます(これには、Expression Encoder 3を特別な設定プロファイルと共に使用できます)。



変換後、拡張子がism、ismc、およびismvのファイルがいくつか取得されます。

拡張子が.ismvのファイルは、mp4形式のビデオ/オーディオストリームです。 あなたが彼をプレーヤーに送りたいなら、彼はあなたにそれをすることを拒否するでしょう。 再生に必要なデータが不足しています。 このようなファイルがいくつかあり、変換設定に依存します。



拡張子がismのファイルは、.ismvファイルとそれに含まれるストリームのビットレートを関連付けます。 ファイル形式は直感的なxmlです。

.ismcファイルには、ブロードキャストストリームに関する情報—ストリーム内のトラックの数とタイプ(オーディオとビデオ)、および各トラックのパラメーターと機能に関する追加情報—キーフレームの数と持続時間、ビデオ/オーディオストリームの数と品質、コーデックの名前、フレームの高さと幅(ビデオのみ)、Silverlightでの再生に必要なCodecPrivateData)。

要約すると、ビットレートと解像度が異なるビデオ/オーディオデータを含むいくつかのファイルと、取得した品質の説明と、すべてのトラックと各トラックの利用可能な品質が示された翻訳記述ファイル(メタ情報)があります。



ステップ2



Webサーバー(この場合はIIS)でのホストまたは公開。 ビデオを公開する前に、IISを少しセットアップする必要があります。つまり、無料のアダプティブブロードキャストソリューションをインストールし、ビデオファイルを配置する1つのフォルダーでWebサイトを作成する必要があります。 追加のアクションを実行する必要はありません。拡張機能自体が、必要なファイルに必要なハンドラーを登録します。 すべての設定が完了したら、最初の手順で取得したファイルを、Webサイトにあるフォルダーにコピー/転送します。

Webエクスプローラーの行にあるこれらのトリッキーなアクションの後に、拡張子が.ism / manifestのファイルのアドレスを指定すると、結果として.ismcファイルのコンテンツが取得されます。

サーバーのタスクは、.ismcファイルを配布し、特定の時間オフセットとビットレートでmp4形式のストリームの小さなフラグメントを作成して配布することです。



ステップ3



Silverlightプレーヤーを介してユーザーにビデオをブロードキャストします。 私の意見では、これは最も興味深い段階です。

遠くから始めましょう。 IISは、多数の短い(送信データの量に関して)要求を非常にうまく処理できるように設計されており、長くて大量の要求があると、急速なメモリリークが発生します。 したがって、もちろん100を超える接続を提供する場合を除き、非常に多くのデータであるビデオのブロードキャストは失敗します。 これには2つの方法があります。RAMを増やすか、独自のまたはサードパーティのストリーミングサーバーを使用します。

Silverlight 2のリリースにより状況が変わりました。つまり、ビデオ再生の場合、サーバーへの永続的な接続の必要性がなくなり、少なくとも10回のリクエストでビデオをダウンロードできます。 IISは1つの大きなリクエストを処理してビデオ全体を送信する必要がなくなり、1つのビデオクリップを多数の小さなピースに分割できます。各ピースは個別のリクエストで、各ピースは個別のキーフレームです。 これはすべて、キープアライブモード(Webブラウザーがサーバーへの接続を開いたままにする)とともに非常に良い結果をもたらします。たとえば、RAM消費が大幅に削減され、メモリリークを削除するために、ビデオ再生を中断することなくIISワークフローを定期的に再起動できますなど

元の質問に戻る-Silverlightでアダプティブビデオブロードキャストはどのように機能しますか?

クライアントでは、次の3つの段階で発生します。

  1. .ism /マニフェストメタ情報ファイルをダウンロードして解析します。 これは次の目的で必要です。

    • ブロードキャストの目的のフラグメントへのリクエストテンプレートに関する情報を取得します。
    • 最大解像度を取得します。
    • 期間を調べる。
    • キーフレームのリストを取得します。
    • トラックの数と画像劣化のレベルの数を見つけます。
    • 特別なパラメーターPrivateCodecDataなども取得します。
  2. ブロードキャストの最初のフラグメントをダウンロードします。 これを行うには、所定のテンプレートに従って生成された通常のHTTP GET要求を使用します。 次に、データパケットを形成し、それらを組み込みのSilverlightデコーダーに送信して、ユーザーの画面に表示します。
  3. ネットワークチャネルの機能を分析し、遅延なく再生できるビットレートを取得し、次のHTTP GET要求のアドレスが必要なビデオフラグメントに形成され、視聴されているブロードキャストが終了するまで続きます。


これをスニファーで見ると、Webエクスプローラーによって送信された.ism / QualityLevels({bitrate})/ Fragments(video = {time})など、多くのHTTPリクエストが表示されます。これらはビデオフラグメントのリクエストです。 ご覧のとおり、たくさんのリクエストがあり、放送は途切れることなく続いています。





このアプローチを使用すると、インターネット上でビデオをブロードキャストするための多くのプロトコルと改良を思いついて実装できます。 さらに、SmoothStreamingがSilverlightでどのように記述されているかを見て、独自の実装を行うことができます。 たとえば、flvファイルアーカイブをブロードキャストするために、サーバーパーツを自分で作成することもできます(この理由は、Habrに関するトピックで説明した理由です。SilverlightでFLVを再生する-これが必要な理由 )。






All Articles