[音声およびビデオ処理] MP4、FLV、HLS の適用範囲、オンラインビデオ再生にはどれが適していますか

皆さん、こんにちは。Stop Refactoring チャンネルへようこそ。

以前にライブ ストリーミング プロトコルについて説明しましたが、今回はオンライン オンデマンドのビデオ形式について説明します

つまり、MP4、FLV、HLS などのネットワーク ビデオ ファイルやショート ビデオの一般的に使用される形式です。

これらのビデオ形式の長所と短所、およびオンライン オンデマンド シナリオにおけるその理由について詳しく説明します。

次の順序で説明します。

1. 包装形態の役割 

2、MP4 

3、FLV 

4、HLS 

包装形態の役割 

まず最初に、MP4、FLV、および HLS はすべてカプセル化形式であることを明確にする必要があります。

前の「オーディオおよびビデオのトランスコーディングの動作原理」で説明したように、ビデオ ファイルは基本的にカプセル化、エンコード、および基本データの3 つの層に分割されます。

ビデオを再生するには、プレーヤーがこれらの 3 層フォーマットを同時にサポートしている必要があります。

ほとんどのブラウザでサポートされているエンコードと基本データ形式はスケーラブルではないため、同じ MP4 ファイルのエンコード形式が異なる場合でも、ブラウザで再生できない場合があります。

 さらに、ほとんどのパッケージ形式では、フレーム レート、解像度、サンプリング レートなどのオーディオおよびビデオ データの基本パラメータが制限されません。

したがって、MP4 ファイルが FLV ファイルよりも明らかであるという主張は、基本的に噂です。

では、パッケージ形式は何に役立つのでしょうか

カプセル化形式とは、簡単に言えば、音声データ、映像データ、基本情報などのデータを、ある構造規則に従ってファイルに配置するだけです。

データ配置はオーディオおよびビデオ データ自体には影響しませんが、MKV パッケージ形式は外部字幕をサポートし、異なる言語の字幕を切り替えることができるなど、いくつかの特定のシナリオに影響します。

オンラインビデオ再生のシーンでは、MP4 ファイルよりも FLV および HLS ビデオのパフォーマンスが優れています。

優れているのは画質や音質ではなく、最初のフレームの再生時間やロード前のジャンプなどのパフォーマンスが優れていることですが、その理由を以下に詳しく紹介します。

MP4

MP4 は最も一般的なカプセル化形式であり、幅広いアプリケーション、高い柔軟性、強力な互換性を備えています。

MP4 はカスタム カバー アートもサポートしており、ほぼすべてのプレーヤーとブラウザさえもこのパッケージ形式をサポートしています

MP4 ファイルは、多数のデータ ブロックが入れ子になったツリー構造です。MP4 は数十のデータ ブロック タイプをサポートし、異なるタイプのデータ ブロックには異なる情報が格納されます。

ただし、多くのデータ ブロックは不要なので、mp4info ツールを使用すると、特定の MP4 ファイルのデータ ブロック構造とデータを表示できます。

MP4 の技術的な詳細をすべて理解する必要はありませんが、MP4 ファイルに必要なデータ ブロックである ftyb、mdat、moov の 3 つのデータ ブロックの機能を知っておく必要があります。

ftyb データブロックにはエンコード形式や規格などの情報が格納されており、プレーヤーはこれらの情報に基づいて対応するデコーダを選択する必要があります。

mdat データ ブロックには、特定のオーディオおよびビデオ データが格納されます。ここに記録されるオーディオおよびビデオ データには通常、タイムスタンプがありません。

moov データ ブロックには、mdat データ内のマッピング関係を含むメタデータが格納されており、プレーヤーは moov データに基づいてオーディオ フレームとビデオ フレームの再生タイムスタンプを計算する必要があります。

ネットワークが正常な場合、オンラインで再生される MP4 ファイルの再生に時間がかかることがよくあります。

多くの場合、moov データ ブロックが取得されていないため、オーディオおよびビデオ フレームの再生時間が計算できず、再生できないことが原因です。

したがって、MP4 ファイルをオンライン再生に使用する場合は、通常、MOOV データ ブロックを mdat データ ブロックの前に配置する必要があります。これは、再生を高速化するのに役立ちます。多くのツールがこの操作を実行できます。FFmpeg コマンドを図に示します。 。

MP4 ファイルは FLV ファイルよりも大きくなるという人もいますが、これは MP4 ファイルには不要な情報が多く記録されていることが原因である可能性があります。通常、同じビデオの場合、MP4 でカプセル化されたファイルのサイズは FLV ファイルとほぼ同じです。 FLV でカプセル化されたファイル。

オンライン再生が Web サイト システムの主な業務ではなく、ビデオ ファイルが大きくなく、再生時間が長くない場合は、MP4 ファイルを直接使用できます。結局のところ、ブラウザと多くのプレーヤーは MP4 カプセル化形式をサポートしており、ユーザーは MP4 カプセル化形式をサポートしています。わざわざアップロードする必要はありません。

ただし、数 GB の大きなファイル サイズまたは長時間のビデオ ファイルがある場合は、MP4 形式の使用を避けてください。第一に、CDN 高速化の効果が良くなく、第二に、MP4 ファイルは長時間再生すると中断される可能性があります。オンライン再生です。

FLV

FLV 形式は、以前の「ライブ ストリーミング プロトコル」の RTMP や HTTP-FLV に似ており、結局のところ、これらは Adob​​e が主導または立ち上げた標準です。

FLV はオンラインビデオ用に設計された形式で、flv.js プラグインを追加することで Web ページを再生できます。

FLV ファイルの各オーディオおよびビデオ データ ブロックにはタイム スタンプを付けることができるため、最初のフレームの再生やアンロードされたジャンプなどのシーンで FLV のパフォーマンスが向上します。

ここで特別に説明する必要があるのは、FLV ビデオ ファイルをオンラインで再生するときに、アンロードされたジャンプを報告するエラーが発生する場合があります。つまり、ジャンプがロードされていないときにエラーが報告され、再生が中断されることです。

一般に、FLV ファイルにはキー フレーム インデックスがなく 、図に示すように FFmpeg コマンドによってキー フレーム インデックスが追加されることが原因です。

一般的に、オンラインビデオは FLV 形式のファイルを使用します。過去のテストの経験では、大きなファイルや長時間の再生は MP4 よりも安定しています。もちろん、通常の CDN アクセラレーションは大きな FLV ファイルには効果的ではありませんが、大きなファイルの CDN にアクセスしてこの問題を軽減できます。

HLS

最後は HLS 形式ですが、HLS については以前の「ライブ ストリーミング プロトコル」で詳しく説明しました。

オンデマンド シナリオでは、HLS は基本的に、大きなビデオ ファイルを多数の断片化されたビデオ ファイルに分割します。

HLS 形式のファイルは2 つの部分で構成されています。1 つは数秒の長さしかない複数の .ts 断片化ビデオ ファイルで、もう 1 つはこれらのビデオ ファイルのアドレスを記録する .m3u8 インデックス ファイルです。

HLS 表示アドレスは実際には .m3u8 インデックス ファイルであり、クライアントはインデックス ファイルを取得した後、対応する断片化されたビデオ ファイルをダウンロードして再生を開始できます。

HLS の .m3u8 インデックス ファイルはセカンダリ インデックスをサポートしています。つまり、高解像度、標準解像度、スムーズなどの複数の表示アドレスを 1 つのインデックス ファイルに統合でき、プレーヤーは現在の状況に応じて異なる表示アドレスを自動的に切り替えることができます。 「これも原因です。

HLS はビデオ ファイルを多数の断片化されたファイルに分割するため、オンラインで長いビデオを再生する場合、FLV 形式と比較して、アンロード ジャンプ、CDN アクセラレーション、およびマルチスレッド プリロードの点でHLSの方が優れています。

ただし、短いビデオ シーンでは、HLS の利点は明らかではありません。また、ビデオ フラグメント ts ファイル自体も完全なビデオ パッケージ形式であり、独立して再生することもできるため、不必要なトラフィックが生成されます。

また、HLS動画は基本的に多くのファイルで構成されているため、Webサイトのシステム側で自力でトランスコードする必要があり、これもHLS動画の面倒な部分ですが、パブリッククラウドには動画ファイルのトランスコードサービスもあり、通常は自動で提供されています。トランスコーディング機能。

さらに、HLS プロトコルは Apple によって導入された標準であり、MPEG-DASH プロトコルは HLS プロトコルに似ています。HLS と MPEG-DASH の動作原理は似ていますが、一部の規格が異なるため、ここでは詳しく説明しません。

要約する

一般的に、Web サイト システムにビデオがあまりなく、オンライン再生が主なビジネスではない場合は、ビデオ ファイルの通常の MP4 形式で問題ありません。

オンラインでビデオを再生することが主なビジネスの場合は、FLV 形式と HLS 形式を考慮する必要があります。

短い動画が多い場合は FLV 形式、長い動画や大きなファイルが多い場合は HLS 形式が推奨されます。

おすすめ

転載: blog.csdn.net/Daniel_Leung/article/details/130686746