web-dev-qa-db-ja.com

「var_stream_map」の使用中のHLS変換の問題

次のコマンドを使用して、既存の.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つの形式のオーディオ。

期待される出力は

  1. 1080kのビデオ品質と64kのオーディオ品質
  2. 720kのビデオ品質と64kのオーディオ品質
  3. 480kのビデオ品質と64kのオーディオ品質
  4. 240kのビデオ品質と32kのオーディオ品質

上記のコマンドは、次のコンテンツを含むマスタープレイリストを作成することです

#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」オプションを説明するドキュメントをいただければ幸いです。

FFMPEGドキュメント

例がありますが、これらのオプションの説明はあまり明確ではありません

1
Abhishek Gn

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を追加します。

0
Gyan