次のコマンドを使用して、既存の.mp4ビデオを複数のビデオおよびオーディオ形式に変換しています
ffmpeg -y \
-i sample.mp4 \
-hls_list_size 0 \
-hls_key_info_file keyfile \
-b:v:0 1080k -b:v:1 720k -b:v:2 480k -b:v:3 240k -b:a:0 64k -b:a:1 32k \
-map 0:v -map 0:v -map 0:v -map 0:v -map 0:a -map 0:a \
-var_stream_map "v:0,a:0 v:1,a:0 v:2,a:0 v:3,a:1" \
-master_pl_name master.m3u8 \
"output/%v/manifest.m3u8"
要件は、既存のビデオを4つの品質、つまり1080k、720k、480k、および240kに変換することです。 64kと32kの2つの形式のオーディオ。
期待される出力は
上記のコマンドは、次のコンテンツを含むマスタープレイリストを作成することです
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=1258400,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
0/manifest.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=862400,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
1/manifest.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=598400,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
2/manifest.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=299200,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
3/manifest.m3u8
誰かが私がどこで間違っているのか教えてもらえますか?
また、「-map」および「-var_stream_map」オプションを説明するドキュメントをいただければ幸いです。
例がありますが、これらのオプションの説明はあまり明確ではありません
1080、720、480、240の数字は通常解像度を示し、接尾辞はp
ではなくk
です。これらの番号をビットレートオプションに割り当てましたが、ストリームは再スケーリングされません。
-filter:v:0 scale=-2:1080 -filter:v:1 scale=-2:720 -filter:v:2 scale=-2:480 -filter:v:3 scale=-2:240
を追加します。
また、ビットレート値を置き換えることもできます。
-b:v:0 4000k -b:v:1 2000k -b:v:2 1000k -b:v:3 300k
ただし、実際の値はビジネス要件によって異なります。
入力オーディオは6チャンネルです。 Webプレーヤーは通常、2つのチャネルを必要とします。したがって、-ac 2
を追加します。