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

问题描述 投票:2回答:1

我从声卡中捕获声音,将其转换为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过滤器时的视频帧)。

audio ffmpeg volume
1个回答
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构建。

当您的流媒体处于活动状态时,您无法关闭此视频窗口。

© www.soinside.com 2019 - 2024. All rights reserved.