VLC:从命令行将均衡器应用为转码链的一部分

VLC:从命令行将均衡器应用为转码链的一部分

我多次看到有人问这个问题,但一直找不到答案。一个问题似乎是版本间的变化,因此关于这个话题的历史讨论似乎常常失去相关性。

我正在尝试使用类似以下命令从命令行将均衡器应用于滤波器链:

vlc --audio-filter equalizer -I dummy myfile.mp4 :sout=#transcode{afilter=equalizer{bands="1.5,-0.9,-1.6,-1.6,-0.5,1.4,2.7,3.4,3.2,2.8",twopass=true},vcodec=none,acodec=fl32,ab=128,channels=2,samplerate=44100}:std{access=file,mux=wav,dst="myfile.wav"}

我得到类似这样的信息:

[006a651c] core stream out error: cannot add user audio filter "equalizer{bands=1.5,-0.9,-1.6,-1.6,-0.5,1.4,2.7,3.4,3.2,2.8,twopass=true}" (skipped)

我尝试了很多不同的变化,看起来它对均衡器滤波器本身不满意,而不是参数。

另外,我会同样高兴,甚至更高兴,将 VLC 滤波器带简单地转换为 ffmpeg 均衡器语句,例如:

equalizer=f=60:width_type=o:width=1:g=1.5, equalizer=f=170:width_type=o:width=1:g=-0.9, equalizer=f=310:width_type=o:width=1:g=-1.6, equalizer=f=600:width_type=o:width=1:g=-1.6, equalizer=f=1000:width_type=o:width=1:g=-0.5, equalizer=f=3000:width_type=o:width=1:g=1.4, equalizer=f=6000:width_type=o:width=1:g=2.7, equalizer=f=12000:width_type=o:width=3:g=3.4, equalizer=f=14000:width_type=o:width=3:g=3.2, equalizer=f=16000:width_type=o:width=3:g=2.8

但是我还没有弄清楚 vlc 正在实现什么类型的滤波器或者它的 Q 或带宽,所以我无法得到等效的结果。

有人知道如何使用非两年前的版本来实现这两个功能吗?

答案1

我想我只是没有尝试足够多的排列。这似乎有效:

vlc --no-video -I dummy MyFile.mp4" --equalizer-bands="1.5 -0.9 -1.6 -1.6 -0.5 1.4 2.7 3.4 3.2 2.8" --equalizer-2pass :sout=#transcode{afilter=equalizer,acodec=fl32,ab=128,channels=2,samplerate=44100}:std{access=file,mux=wav,dst="MyFile.wav"}

我没有运气在 afilter 中传递参数,但--audio-filter equalizer实际上没有将其插入链中。afilter=equalizer实际上会导致它变得活跃,并且--equalizer-bands=" ... "似乎正确设置了过滤器。

我应该指出,我指的是其他版本ffmpeg-20160731-04da20e-win64-static,并且不能对任何其他版本提出任何主张。

相关内容