音声抽出機能を有効にすると、Alibaba Cloud CDN の POP (Point of Presence) がビデオファイルから音声データを抽出し、クライアントには音声データのみを返します。これにより、帯域幅とトラフィックの使用量が削減されます。
背景情報
クライアントがビデオファイルへのアクセスをリクエストすると、サーバーに URL リクエストが送信されます。たとえば、http://www.aliyun.com/test.flv?ali_audio_only=1 のようなリクエストの場合、CDN サーバーはクライアントに音声データのみを送信します。クライアントは Transfer-Encoding: chunked をサポートしている必要があります。
音声抽出機能は Range リクエストをサポートしていませんが、多くのクライアント (iOS デバイス上の Safari やブラウザーなど) はビデオ再生時に Range リクエストを開始します。この機能を使用するには、自社開発のクライアントを使用することを推奨します。
ユーザーが音声再生中にプログレスバーをドラッグできるようにするには、ビデオシーク機能も設定する必要があります。ユーザーがプログレスバーをドラッグすると、システムはソースビデオのメタデータを読み取り、シーク先の再生位置を決定します。詳細については、「ビデオシーク」をご参照ください。
現在、音声抽出機能は、MP4 ボックスヘッダーサイズが 16 バイト (64 ビット) の場合はサポートせず、8 バイトの場合のみサポートします。ヘッダーサイズとその確認方法の詳細については、「MP4 ボックスヘッダーサイズ」をご参照ください。
手順
ApsaraVideo VOD コンソールにログインします。
左側のナビゲーションウィンドウで、[設定管理]> [CDN設定]> [ドメイン名] を選択します。
[ドメイン名] ページで、管理するドメイン名を見つけ、[操作] 列の [設定] をクリックします。
左側メニューで、動画関連 をクリックします。
[音声抽出] エリアで、スイッチをオンにします。
音声抽出機能を有効にした後、
ali_audio_onlyリクエストパラメーターを使用する必要があります。サポートされているファイル形式を次の表に示します。ファイル形式
メタデータ
ali_audio_only パラメーター
例
MP4
ソースビデオのメタデータはファイルヘッダーに配置する必要があります。メタデータが末尾にあるビデオはサポートされていません。
ali_audio_onlyパラメーターは、リクエストが音声/ビデオ分離リクエストであることを示します。サーバーはメタデータと音声情報のみを返し、ビデオ情報は除外されます。このパラメーターが指定されていないか、パラメーター値が 1 でない場合、この機能は無効になります。http://domain/video.mp4?ali_audio_only=1をリクエストします。FLV
要件なし。
ali_audio_onlyパラメーターは、リクエストが音声/ビデオ分離リクエストであることを示します。サーバーはメタデータと音声情報のみを返し、ビデオ情報は除外されます。このパラメーターが指定されていないか、値が 1 でない場合、この機能は無効になります。http://domain/video.flv?ali_audio_only=1をリクエストします。
MP4 ボックスヘッダーのサイズ
オーディオ抽出機能による MP4 ファイルの処理が失敗した場合、そのファイルの mdat ボックスがオーディオ抽出と互換性のない拡張 16 バイト ヘッダーを使用している可能性があります。このセクションを参照して、ボックスヘッダーのサイズを理解し、お使いのファイルに互換性があるかを確認してください。
MP4 ボックスヘッダーについて
MP4 ファイルは、moov ボックスや mdat ボックスなど、複数のボックス (コンテナユニット) で構成されています。各ボックスには、ボックスのサイズとタイプを記述するヘッダーが含まれています。ヘッダーには次の 2 つのフォーマットがあります。
フォーマット | ヘッダーサイズ | 説明 |
標準ヘッダー | 8 バイト (32 ビット) | サイズフィールド (4 バイト) とボックスタイプフィールド (4 バイト) を含みます。サイズフィールドにはボックスの実際のサイズが格納されます。ボックスサイズが 4 バイトで表現できる場合に使用されます。 |
拡張ヘッダー | 16 バイト (64 ビット) | サイズフィールド (4 バイト、固定値 1)、ボックスタイプフィールド (4 バイト)、および largesize フィールド (8 バイト) を含みます。サイズフィールドが 1 の場合、largesize メカニズムが有効になり、実際のボックスサイズは largesize フィールドに格納されます。データ量の大きい mdat ボックスで一般的に使用されます。 |
MP4 ファイルのボックスヘッダーサイズの確認
以下のツールを使用して、MP4 ファイルのボックスヘッダーサイズを確認できます。
方法 1: MP4Box.js オンラインツールを使用する (推奨)
MP4 ファイルをアップロードします。
左側の Box View ツリーで、[mdat (MediaDataBox)] をクリックします。
右側の [Box Property View] で、
original_sizeフィールドを確認してヘッダーサイズを判断します。original_sizeが 1 の場合:mdat ボックスヘッダーのサイズは 16 バイトです。オーディオ抽出はサポートされていません。original_sizeが表示されないか、1 ではない場合:mdat ボックスヘッダーのサイズは 8 バイトです。オーディオ抽出はサポートされています。
次の表は、両方のシナリオのプロパティを比較したものです。
プロパティ | ヘッダーサイズ = 8 バイト (サポート) | ヘッダーサイズ = 16 バイト (非サポート) |
size | 実際のサイズ値 | 実際のサイズ値 |
box_name | MediaDataBox | MediaDataBox |
start | オフセット (バイト単位) | オフセット (バイト単位) |
original_size | 表示されない | 1 と表示される |
方法 2: Bento4 コマンドラインツールを使用する
次のコマンドを実行します。
./mp4dump your-file.mp4 | grep -E "\[mdat\]|\[moov\]"出力の解釈:
[mdat] size=8+xxxxxx:ヘッダーサイズは 8 バイトです。オーディオ抽出はサポートされています。[mdat] size=16+xxxxxx:ヘッダーサイズは 16 バイトです。オーディオ抽出はサポートされていません。
オーディオ抽出におけるヘッダーサイズの制限
オーディオ抽出は、mdat ボックスが標準の 8 バイト ヘッダーを使用する MP4 ファイルのみをサポートします。mdat ボックスが拡張 16 バイト ヘッダー (largesize メカニズム) を使用するファイルはサポートされていません。
MP4 ファイルのシナリオ | ヘッダーサイズ | オーディオ抽出 |
mdat ボックスが標準ヘッダーを使用 | 8 バイト | サポート |
mdat ボックスが拡張 large-size ヘッダーを使用 | 16 バイト | 非サポート |
この制限は、主に生のメディアデータを格納する mdat ボックスに適用されます。moov などの他のボックスは、通常、デフォルトの 8 バイト ヘッダーを使用するため、この制限の影響は受けません。