如何在ffmpeg捕获期间监视音量级别

时间:2017-08-01 15:57:54

标签: audio ffmpeg volume

我从声卡中捕获声音,将其转换为mp3并流式传输到多播IP。 命令如下:

ffmpeg -f alsa -i hw:0 -async 1 -vn -acodec libmp3lame -ac 1 -ar 44100 -b:a 128k -flush_packets 0 -f mpegts -pes_payload_size 426 -mpegts_start_pid 0x44 udp://233.21.215.101:1234?pkt_size=1316

但我需要监控捕获的音量。如果没有声音(或只有噪音),我需要切换到另一个(预留)频道。

我可以在ffmpeg输出中获得音量级别吗?我怎么能这样做?

P.S:我可以通过“volumedetect”过滤器获得音量,但它不是实时的。我需要实时监控。

P.P.S:我从我的应用程序中以编程方式运行ffmpeg,无法监视其他窗口(如使用showvolume过滤器时的视频帧)。

1 个答案:

答案 0 :(得分:2)

现在,我可以建议使用showvolume过滤器

ffmpeg -f alsa -i hw:0
       -async 1 -vn -acodec libmp3lame -ac 1 -ar 44100 -b:a 128k
       -flush_packets 0 -f mpegts
       -pes_payload_size 426 -mpegts_start_pid 0x44 udp://233.21.215.101:1234?pkt_size=1316
       -filter_complex showvolume[a] -map [a] -f sdl -

将弹出一个小视频窗口,其中显示当前音量的条形图显示以及文本标签。您需要一个链接了SDL库的ffmpeg构建。

流媒体处于有效状态时,您无法关闭此视频窗口。