实时显示 ffplay

实时显示 ffplay

我在 Linux 中使用 FFMPEG 的 ffplay (showcqt) 来分析音乐作品。目前我必须将其录制为 MP3 文件,然后通过 ffplay showcqt 播放该文件以查看可视化效果、进行调整并重复。

是否可以绕过 MP3 文件创建并获取实时输入并永久显示 showcqt 可视化器?

如果可能的话,我肯定会用 Raspberry Pi 和等离子屏幕来永久显示这一点,这样我就可以不断地实时分析音频。

谢谢,

菲尔

2022 年 5 月更新诉状

我想再次更新此内容,看看自 2020 年我第一次提出这个问题以来是否有人找到了解决方案。

我的 Autonomou5 YouTube 频道https://www.youtube.com/channel/UC_7n4p29Sq3_xyWxQMOZRQw展示了 FFPLAY 如何显示带有音符音高的有用的 FFT,这对于检查合成器的音高非常有用(并且还可以制作精彩的视频将音乐上传到 youtube)。

但是,我必须录制现场音频,保存为 mp3,然后在保存的音频文件上使用 FFPLAY,然后将其录制为视频。

这是 ffplay CLI 代码:-

ffplay -f lavfi 'amovie=AudioFile.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5:text=1 [out0]'

我将非常感激任何能够实时显示 FFPLAY 的提示、建议或提示。例如:流式传输音频并使用 FFPLAY 以流作为源。我没有流式传输经验,甚至不知道这是否可行。

有人设法在现场音频上运行 FFPLAY 吗?

答案1

我不知道其他音响系统的情况,但我设法使用 pulseaudio 做到了这一点。使用 pulseaudio,所有接收器都有一个相应的“监视器”源,可以记录或分析。您可以使用以下命令列出所有源,包括与输出设备相对应的监视器

pactl list sources short

一旦您获得了与您的输出设备相对应的监视器的名称(或编号)(alsa_output.pci-0000_05_00.1.hdmi-stereo.monitor就我的情况而言),您可以通过以下方式将其可视化:

ffmpeg -nostdin -loglevel quiet -f pulse -i alsa_output.pci-0000_05_00.1.hdmi-stereo.monitor -f nut pipe: \
  | ffplay -f lavfi -i 'amovie=pipe\\:,showspectrum=size=2560x1440:mode=separate:scale=cbrt:color=cividis [out0]'

如果可视化效果明显落后于音频,您可以尝试向 ffplay 添加一些延迟改进标志这个答案。对我来说,-fflags nobuffer这招很管用。

您可以使用任何可视化过滤器,showspectrum这只是一个例子,showcqt您在问题中提到的过滤器也可以使用。但是,如果过滤器也将其音频复制到其输出,则需要将其静音(使用选项-an或过滤volume器),否则它将在输出设备上播放并导致反馈循环。例如:

ffmpeg -nostdin -loglevel quiet -f pulse -i alsa_output.pci-0000_05_00.1.hdmi-stereo.monitor -f nut pipe: \
  | ffplay -an -fflags nobuffer -f lavfi -i 'amovie=pipe\\:,ebur128=video=1 [out0][out1]'

最好是ffmpeg在命令中删除它并仅使用,ffplay但我找不到这样做的方法。

相关内容