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
join 比 amerge 的优势在于允许您更好地控制流在输出通道布局中的位置:
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
查看支持的频道布局列表。
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
join 比 amerge 的优势在于允许您更好地控制流在输出通道布局中的位置:
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
查看支持的频道布局列表。