我正在使用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
:
ffmpeg -i audio.mp3 -filter_complex highpass highpass.mp3
在audio.mp3上运行showfreqs
:
ffmpeg -i audio.mp3 -filter_complex showfreqs,format=yuv420p showfreqs.mp4
在highpass.mp3上运行showfreqs
:
ffmpeg -i highpass.mp3 -filter_complex showfreqs,format=yuv420p showfreqs.mp4
在audio.mp3上依次运行highpass
和showfreqs
:
ffmpeg -i audio.mp3 -filter_complex highpass,showfreqs,format=yuv420p highpass.mp4
我尝试了几种不同的源音频文件,并始终获得相同的结果。
我尝试了2种不同的Mac,尽管两者都通过Homebrew安装了FFMPEG 4.1.4。
我尝试了不同的高通设置,并获得了相同的结果(默认的高通设置足以反正这个区别)。
更新2
在QuickTime中并排查看生成的视频,我发现showfreqs
实际上似乎正在使用highpass
的音频流,但最终的视频包含未经过滤的原始音频。
所以我的问题实际上是如何使生成的视频使用经过过滤的音频流而不是原始音频流。
答案 0 :(得分:0)
showfreqs
将其音频输入转换为视频输出,因此ffmpeg将回退到原始音频以进行音频输出。为了避免这种情况,请分割高通结果,然后将一个副本传递给showfreqs,同时将另一个副本传递给音频输出。
ffmpeg -i audio.mp3 -filter_complex highpass,asplit=2[sf][aud];[sf]showfreqs,format=yuv420p;[aud]anull highpass.mp4