FFmpegでマルチストリームオーディオをシングルストリームに変換する
マルチストリームオーディオのビデオファイルを、配信などに利用しようとすると往々にしてシングルストリームオーディオのファイルに変換する必要があります。
マルチストリームオーディオ
マルチストリームオーディオというのはffmpeg -i
で情報を表示すると以下のように複数のオーディオが含まれる物のことです。
例えば、7.1chがマルチストリームで入っているビデオファイルの一部を抜粋すると以下のようになります。
各ストリームはモノラル(1ch)で、チャンネルポジション情報が含まれています。
Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (FL), s32 (24 bit), 1152 kb/s (default)
Metadata:
creation_time : 2020-02-20T01:43:19.000000Z
handler_name : Apple Sound Media Handler
vendor_id :
timecode : 00:00:00:00
Stream #0:2(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (FR), s32 (24 bit), 1152 kb/s (default)
Metadata:
creation_time : 2020-02-20T01:43:19.000000Z
handler_name : Apple Sound Media Handler
vendor_id :
timecode : 00:00:00:00
シングルストリームオーディオ
一方シングルストリームの場合は、1つのストリームで複数のチャンネルが含まれます。
5.1chの場合は以下のようになります。
ドルビーのテストトーンがこの形式で提供されています。
Stream #0:1(und): Audio: eac3 (ec-3 / 0x332D6365), 48000 Hz, 5.1(side), fltp, 448 kb/s (default)
Metadata:
creation_time : 2016-10-21T00:35:40.000000Z
handler_name : sound handler
vendor_id : [0][0][0][0]
マルチストリームからシングルストリームの変換
チャンネル数を維持する場合
チャンネル数を維持する場合は、join audio filterに正しい入力数とチャンネルレイアウトを指定することでシングルストリームにすることができます。
7.1ch(つまり、8つのオーディオストリームがある)の場合は以下のようになります。
元ファイルのオーディオストリームの内、利用できていないものがある場合は以下のようなwarningが出力されるので、これが表示された際はコマンドを見直す必要があります。
[Parsed_join_0 @ 0x7fae33f7d000] No channels are used from input stream 2.
[Parsed_join_0 @ 0x7fae33f7d000] No channels are used from input stream 3.
[Parsed_join_0 @ 0x7fae33f7d000] No channels are used from input stream 4.
[Parsed_join_0 @ 0x7fae33f7d000] No channels are used from input stream 5.
[Parsed_join_0 @ 0x7fae33f7d000] No channels are used from input stream 6.
[Parsed_join_0 @ 0x7fae33f7d000] No channels are used from input stream 7.
チャンネル数を変更する場合
チャンネル数を変更する場合は、前述のjoin audio filterを使用した上で、-ac
オプションによってチャンネル数を変更することができます。
ステレオ(2ch)の場合は以下のようになります。
5.1chの場合は以下のようになります。
参考文献
記事が気に入ったらチップを送ることができます!
You can give me a cup of coffee :)
Kyash ID: soranoba
Amazon: Wish List
GitHub Sponsor: github.com/sponsors/soranoba
PayPal.Me: paypal.me/soranoba
(Updated: )