如何在FFMPEG的复杂滤波器中使用滤波后的音频?

时间:2019-09-15 01:19:48

标签: ffmpeg

我正在使用highpass音频过滤器,然后尝试在生成的音频流上使用showfreqs,但是它不起作用。 showfreqs过滤器使用原始音频流,而不是过滤后的音频流。

命令:

ffmpeg -i audio.mp3 -filter_complex highpass,showfreqs,format=yuv420p highpass.mp4

我尝试命名highpass输出,但没有任何区别:

ffmpeg -i audio.mp3 -filter_complex highpass[hi],[hi]showfreqs,format=yuv420p highpass.mp4

如何构造命令,以便showfreqs使用highpass的输出?

更新

我正在使用通过Homebrew在Mac上安装的FFMPEG 4.1.4。

源音频:https://dsc.cloud/weavermedia/audio.mp3

命令和生成的文件

在audio.mp3上运行highpass

在audio.mp3上运行showfreqs

在highpass.mp3上运行showfreqs

在audio.mp3上依次运行highpassshowfreqs

我尝试了几种不同的源音频文件,并始终获得相同的结果。

我尝试了2种不同的Mac,尽管两者都通过Homebrew安装了FFMPEG 4.1.4。

我尝试了不同的高通设置,并获得了相同的结果(默认的高通设置足以反正这个区别)。

更新2

在QuickTime中并排查看生成的视频,我发现showfreqs实际上似乎正在使用highpass的音频流,但最终的视频包含未经过滤的原始音频。

所以我的问题实际上是如何使生成的视频使用经过过滤的音频流而不是原始音频流。

1 个答案:

答案 0 :(得分:0)

showfreqs将其音频输入转换为视频输出,因此ffm​​peg将回退到原始音频以进行音频输出。为了避免这种情况,请分割高通结果,然后将一个副本传递给showfreqs,同时将另一个副本传递给音频输出。

ffmpeg -i audio.mp3 -filter_complex highpass,asplit=2[sf][aud];[sf]showfreqs,format=yuv420p;[aud]anull highpass.mp4
相关问题