web-dev-qa-db-ja.com

ffplayは、ストリームが5.1ではなく5.1(side)であると考えています

Ffplayで5.1 flacファイルを再生しようとすると、次のように自動的にストリームが検出されます。

  Duration: xx:xx:xx.xx, start: 0.000000, bitrate: xxxx kb/s
    Stream #0:0: Audio: flac, 48000 Hz, 5.1(side), s32 (24 bit)

ご覧のとおり、ファイルがチャネルレイアウト5.1(side)として検出されます。これにより、サイドスピーカー(実際にはリアスピーカー)が非常に静かになります。これらのチャンネルにゲインを追加すると、歪みが生じます。 FL、FR、C、LFE、RL、RRとして記述されているffplayドキュメントの他の5.1チャンネルレイアウトを使用して、それらを適切に再生したいだけです。

Ffplayドキュメントからの抜粋を次に示します。

Standard channel layout compositions can be specified by using the following identifiers:

‘5.1’

    FL+FR+FC+LFE+BL+BR

‘5.1(side)’

    FL+FR+FC+LFE+SL+SR 

上記のレイアウトには両方とも6つのチャンネルがあります。では、「5.1(side)」ではなく「5.1」を使用するように指定するにはどうすればよいですか?

このレイアウトではオーディオがミックスされ、スピーカーでセットアップしたのはこのレイアウトです。

どうすればこれを達成できますか?

2
Nectar

channelmap フィルターを使用できます:

ffmpeg -i input.flac -af "channelmap=channel_layout=5.1" output.flac

または、再エンコードを回避する場合は、再生時にチャンネルを再マッピングします。

ffplay -af "channelmap=channel_layout=5.1" input.flac
mpv --audio-channels=5.1 input.flac
3
llogan

私がやったのは、5.1(サイド)flacファイルを取得し、ffmpegで6つの.wavファイルに分割することです(最近のffmpegの相対性が必要です)。

開始するには、空のフォルダーに.flacを配置し、ターミナルのそのフォルダーにcdします。このコマンドは.wavに分割されます。 (例としてvoltest.flacを使用

ffmpeg -i ./voltest.flac -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]" -map "[FL]" front_left.wav -map "[FR]" front_right.wav -map "[FC]" front_center.wav -map "[LFE]" lfe.wav -map "[SL]" back_left.wav -map "[SR]" back_right.wav

分割後、このコマンドを使用してflacに再エンコードします

ffmpeg -i front_left.wav -i front_right.wav -i front_center.wav -i lfe.wav -i back_left.wav -i back_right.wav -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[aout]" -map "[aout]" output.flac

したがって、output.flacは必要に応じてマップされます。おそらく、一度に多くの.flacsを一度に実行するスクリプトを作成できます。少し実験して名前.

3
doug