我正在使用 highpass
音频过滤器然后尝试使用 showfreqs
在生成的音频流上,但它不起作用。 showfreqs
filter 使用原始音频流而不是过滤后的音频流。
命令: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
命令和生成的文件:
运行highpass
在音频.mp3 上:
ffmpeg -i audio.mp3 -filter_complex highpass highpass.mp3
运行
showfreqs
在音频.mp3 上:ffmpeg -i audio.mp3 -filter_complex showfreqs,format=yuv420p showfreqs.mp4
运行
showfreqs
在 highpass.mp3 上:ffmpeg -i highpass.mp3 -filter_complex showfreqs,format=yuv420p showfreqs.mp4
运行
highpass
和 showfreqs
在audio.mp3系列中:ffmpeg -i audio.mp3 -filter_complex highpass,showfreqs,format=yuv420p highpass.mp4
我尝试了几个不同的源音频文件,并且总是得到相同的结果。
我尝试了 2 台不同的 Mac,尽管它们都通过 Homebrew 安装了 FFMPEG 4.1.4。
我尝试了不同的高通设置并得到相同的结果(默认的高通设置足以听到差异)。
更新 2
在 QuickTime 中并排查看生成的视频,我看到
showfreqs
实际上似乎在使用来自 highpass
的音频流但最终的视频包含原始未过滤的音频。所以我的问题实际上是如何让生成的视频使用过滤后的音频流而不是原始视频。
最佳答案
showfreqs
将其音频输入转换为视频输出,因此 ffmpeg 将回退到原始音频以进行音频输出。为了避免这种情况,请拆分高通结果并将一份副本传递给 showfreqs,而将另一份留作音频输出。
ffmpeg -i audio.mp3 -filter_complex highpass,asplit=2[sf][aud];[sf]showfreqs,format=yuv420p;[aud]anull highpass.mp4
关于ffmpeg - 如何在 FFMPEG 的复杂过滤器中使用过滤后的音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57940426/