DASH スライシング (Dynamic Adaptive Streaming over HTTP) (DASH プロトコル: HTTP ベースのアダプティブ ビットレート ストリーミング プロトコル) ビデオ セグメンテーション伝送の概要

DASH スライシングの概要

DASH (Dynamic Adaptive Streaming over HTTP) は、HTTP に基づくアダプティブ ビットレート ストリーミング プロトコルです。この記事では、その仕組み、主な機能、実装方法について詳しく説明します。

動作原理

DASH プロトコルの動作原理には、主に次の手順が含まれます。

1. コンテンツのセグメント化

メディア コンテンツを複数の小さなセグメント (セグメント) に分割し、各セグメントの再生時間は 2 ~ 10 秒などの固定です。

2. マルチレートエンコーディング

セグメントごとに異なる品質レベル、つまり異なるビットレート バージョンを作成します。これは、セグメントごとに、ビットレートと品質が異なる複数のバージョンが存在することを意味します。

3. 説明ファイルの生成

すべてのメディア セグメントの MPD (メディア プレゼンテーション記述) ファイルを生成します。このファイルには、各セグメントの URL、セグメントの長さ、利用可能な品質レベル、その他の情報を含むメディア コンテンツの構造が記述されています。

4. クライアント アダプティブ リクエスト

クライアントは、ネットワーク状態とデバイスのパフォーマンスに基づいて、MPD ファイルから適切なセグメントと品質レベルを選択して要求します。クライアントは、ネットワークの状態が変化した場合に、異なる品質レベルに柔軟に切り替えることができます。

主な特徴

DASH プロトコルの主な機能は次のとおりです。

1. 適応性

クライアントは、現在のネットワーク状態とデバイスのパフォーマンスに基づいて、さまざまな品質レベルのメディア セグメントを選択して再生できます。

2. 互換性

DASH プロトコルは HTTP に基づいているため、既存のインターネット インフラストラクチャ (CDN など) と完全な互換性があります。

3. 柔軟性

DASH プロトコルは、H.264、AAC などのさまざまなメディア エンコード形式をサポートしています。

4. スケーラビリティ

DASH プロトコルは、多言語字幕、マルチオーディオ トラック選択、HDR ビデオなどの高度な機能をサポートします。

達成方法

FFmpeg ツールを使用すると、メディア ファイルを DASH 形式に変換できます。簡単な例を次に示します。

ffmpeg -i input.mp4 -map 0 -b:v:0 800k -s:v:0 640x360 -profile:v:0 main \
-b:v:1 1400k -s:v:1 842x480 -profile:v:1 main \
-b:a:0 128k -use_timeline 1 -use_template 1 -window_size 6 -adaptation_sets "id=0,streams=v id=1,streams=a" out.mpd

この例では、ビデオに 2 つの品質レベルを作成しました。1 つは 800kbps の 360p ビデオ用で、もう 1 つは 1400kbps の 480p ビデオ用です。音声ビットレートは128kbpsです。出力ファイルは ですout.mpd。このファイルには、すべてのセグメントの情報が含まれています。

難しい技術点の分析

DASH プロトコルの概念は直感的ですが、実際にはまだいくつかの課題と問題があります。以下で重要な技術的ポイントのいくつかを分析してみましょう。

1. コードレート選択アルゴリズム

クライアントが適切なビット レートをどのように選択するかは非常に重要な問題です。高すぎるビット レートを選択すると、バッファリングやフリーズが発生する可能性があり、低すぎるビット レートを選択すると、再生品質に影響を与える可能性があります。したがって、ネットワークの状態を正確に予測し、正しい選択を行えるアルゴリズムを設計することが重要です。

2.遅延問題

DASH プロトコルはメディア コンテンツを送信する前にセグメント化する必要があるため、ある程度の遅延が発生する可能性があります。これは、ライブストリーミングなどのライブストリーミングサービスでは問題になる可能性があります。

3. 互換性の問題

DASH プロトコルは HTTP に基づいていますが、すべてのデバイスとブラウザがそれをサポートしているわけではありません。したがって、実際のアプリケーションでは互換性の問題を考慮する必要がある場合があります。

‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‌‍ᅟᅠ‌‌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟ ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅠ⅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌⍌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‌‍ᅟᅠ‌‌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟ ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅠ⅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌⍌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‌‍ᅟᅠ‌‌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟ ‌‍ᅟᅠ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ‌‍ᅟᅠ⅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌⍌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‌‍ᅟᅠ‌‌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ
‌‍ᅟ ᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌⍌ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅠ ‌‍ᅟᅌ ‌‍ᅟᅠ

おすすめ

転載: blog.csdn.net/Dontla/article/details/135326972