【发布时间】:2017-05-11 00:59:05
【问题描述】:
我正在通过 nginx 流式传输一些 RTMP 流,并且我想每隔几秒检查一下哪个流的音量最高。 具体来说,这些流是说话的头脑,我假设通常一次只有一个在说话,我试图找到哪一个。 由于 nginx 可以输出 hls(Apple http live streaming),我决定每隔几秒使用 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 似乎对音量毫无意义。
- 您知道为什么它总是为零吗?
- 有没有帮助理解 mean_volume 的方法?
- 您能想出一个不同的工具来为我提供音量(例如 mediainfo 或 ffprobe)吗?
我也试过了:
ffmpeg -f lavfi -i amovie=/my/path/camera67/123.ts,volumedetect
这次我得到了:
[mpegts @ 0x130bf40] 流 1 的开始时间未在 estimate_timings_from_pts 中设置 [mpegts @ 0x130bf40] 找不到流 1 的编解码器参数(音频:aac([15][0][0][0] / 0x000F),0 个通道,fltp):未指定的采样率 考虑增加“analyzeduration”和“probesize”选项的值 [Parsed_amovie_0 @ 0x130bcc0] 找不到索引为“-1”的音频流 [lavfi @ 0x130abc0] 使用参数“/my/path/camera67/123.ts”初始化过滤器“movie”时出错 amovie=/my/path/camera67/123.ts,volumedetect: 无效参数
有什么想法吗?
谢谢, T.
【问题讨论】:
-
0 dB 是最大音量。负值更安静,下降到负无穷大。您测量的是信号电平,而不是声压。
标签: audio nginx ffmpeg volume http-live-streaming