我正在通过 nginx 流式传输一些 RTMP 流,我想每隔几秒钟检查一次流的音量最高。
具体来说,这些流是说话的头脑,我假设通常一次只有一个在说话,我正试图找到哪一个。
由于 nginx 可以输出 hls(Apple http 实时流媒体),我决定每隔几秒使用 ffmpeg 检查每个流的最后一段。
例子:
ffmpeg -f mp3 -i /my/path/camera67/123.ts -af "volumedetect" -f null /dev/null
由于某种原因,max_volume 始终为零(max_volume:0.0 dB),而 mean_volume 对于音量似乎毫无意义。
我也试过:
ffmpeg -f lavfi -i amovie=/my/path/camera67/123.ts,volumedetect
这次我得到了:
[mpegts @ 0x130bf40] start time for stream 1 is not set in estimate_timings_from_pts [mpegts @ 0x130bf40] Could not find codec parameters for stream 1 (Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp): unspecified sample rate Consider increasing the value for the 'analyzeduration' and 'probesize' options [Parsed_amovie_0 @ 0x130bcc0] No audio stream with index '-1' found [lavfi @ 0x130abc0] Error initializing filter 'amovie' with args '/my/path/camera67/123.ts' amovie=/my/path/camera67/123.ts,volumedetect: Invalid argument
任何想法?
谢谢,
T。
最佳答案
所以这就是发生的事情。
我将 MP3 流式传输到 nginx,将输入转码为不支持 MP3 的 HLS 段。
听 RTMP 输出让我认为音频工作正常,但是当我听 HLS 输出时,我什么也没听到。
我将原始流更改为 AAC,然后 HLS 流给出了正确的输出,我立即看到了音乐与平均音量和最大音量之间的相关性。
谢谢你们。
关于audio - 检测视频音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41333321/