我在 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
但我找不到这样做的方法。