我有无损视频录制的录像带,我将把它们转换为 FFV1 和 FLAC。对于少数几盘录像带,在此过程中,我还需要将音频转换为单声道(只有左音轨存在,因为原始录音是单声道,但捕获设备始终以立体声录制)和我需要以一种只统一调整音量的方式来规范音频(没有像压缩或其他任何会使声音扭曲超出绝对必要的程度的东西),因为摄像机非常安静并且没有办法调整捕获设备的音频级别。
到目前为止我已经确定我需要这两个过滤器:
删除右声道以创建仅具有左声道的单声道录音:
-filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL[left]" -map "[left]"
规范化音频:
-af loudnorm=I=-16:LRA=11:TP=-1.5
但是,我无法确定如何组合这两个过滤器。我尝试过:
ffmpeg -i "input.avi" -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL[left]" -map "[left]", loudnorm=I=-16:LRA=11:TP=-1.5" -c:v ffv1 -level 3 -slicecrc 1 -c:a flac -compression_level 12 "output.mkv"
得出的结果是:
loudnorm=I=-16:LRA=11:TP=-1.5 -c:v ffv1 -level 3 -slicecrc 1 -c:a flac -compression_level 12 output.mkv: Invalid argument
如何将这两个过滤器结合起来?
答案1
当链接简单过滤器(单个输入输出)时,我们可以简单地,
在链接的过滤器之间使用逗号()。
逗号语法意味着第一个过滤器的输出是下一个过滤器的输入:"[0:a]channelsplit=channel_layout=stereo:channels=FL,loudnorm=I=-16:LRA=11:TP=-1.5[left]"
我们还必须使用 来映射视频-map 0:v
。
完整命令行:
ffmpeg -i input.avi -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL,loudnorm=I=-16:LRA=11:TP=-1.5[left]" -map "[left]" -map 0:v -c:v ffv1 -coder 1 -context 1 -g 1 -slices 24 -slicecrc 1 -c:a flac -compression_level 12 output.mkv
注意:我的回答是指语法的正确性,而不是音频过滤器和参数的正确性(我对音频的了解非常有限)。