【问题标题】:How to use filtered audio in complex filter in FFMPEG?如何在 FFMPEG 的复杂过滤器中使用过滤后的音频?
【发布时间】:2020-01-16 07:43:00
【问题描述】:

我正在使用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 的音频流,但最终视频包含未经过滤的原始音频。

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

【问题讨论】:

  • 您的原始命令应该可以工作,并且确实可以在这里工作。尝试在高通中使用不同的音频或激进设置。
  • @Gyan 使用命令和指向生成的音频和视频文件的链接更新了帖子。您能否确认该命令适用于我的源文件?
  • @Gyan 再次更新,似乎showfreqs 实际上使用的是highpass 音频流,但生成的视频使用的是原始视频。这是预期的吗?如何将过滤后的音频放入生成的视频文件中?

标签: ffmpeg


【解决方案1】:

showfreqs 将其音频输入转换为视频输出,因此 ffmpeg 将回退到原始音频以进行音频输出。为了避免这种情况,请拆分高通结果并将一份副本传递给 showfreqs,而将另一份留作音频输出。

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

【讨论】:

  • 在 Mac 上,我必须将整个过滤器字符串括在引号中,我认为是因为分号,但之后它就完美地工作了。谢谢。
猜你喜欢
  • 2021-11-25
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多