ffmpeg 将具有 8 个音频通道的视频文件转换为多通道 wav

ffmpeg convert video file with 8 audio channels to multichannel wav

on run {input, parameters} tell application "Terminal" activate set filesString to "" repeat with file_ in input set filesString to filesString & " " & quoted form of (POSIX path >of file_) end repeat do script "for f in" & filesString & "; do ~/Documents/ffmpeg/ffmpeg -i \"$f\" -acodec pcm_s16le \"${f%.*}.wav\" done" end tell return input end run

我写了一个 applescript 来在 OS X 中添加右键单击服务,但这只需要第一个通道并创建一个单声道 wav 文件。我如何创建一个多声道 wav 以容纳 8 个单声道轨道?

合并

一种方法是使用 amerge filter:

ffmpeg -i input -filter_complex "[0:a:0][0:a:1][0:a:2][0:a:3][0:a:4][0:a:5][0:a:6][0:a:7]amerge=inputs=8" output.wav

加入

另一种方法是使用 join filter:

ffmpeg -i input -filter_complex "[0:a:0][0:a:1][0:a:2][0:a:3][0:a:4][0:a:5][0:a:6][0:a:7]join=inputs=8:channel_layout=7.1" output.wav

joinamerge 的优势在于允许您更好地控制流在输出通道布局中的位置:

ffmpeg -i input -filter_complex "join=inputs=8:channel_layout=7.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-LFE|4.0-BL|5.0-BR|6.0-SL|7.0-SR" output.wav

备注

  • [0:a:5]指的是输入编号0的第4个音频流(本例中的第一个也是唯一的输入)。

  • 如果您知道可以信任默认流选择行为,则可以省略过滤器输入标签([0:a:0][0:a:1][0:a:2] 等)。

  • 您可以通过 ffmpeg -layouts 查看支持的频道布局列表。