ffmpeg 结合 -af 和 -filter_complex 过滤器(使用左轨道创建单声道轨道*和*标准化音频)

ffmpeg 结合 -af 和 -filter_complex 过滤器(使用左轨道创建单声道轨道*和*标准化音频)

我有无损视频录制的录像带,我将把它们转换为 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

注意:我的回答是指语法的正确性,而不是音频过滤器和参数的正确性(我对音频的了解非常有限)。

相关内容