2016-12-26 96 views
0

我正在通过nginx流几个RTMP流,我想每隔几秒钟检查一下哪个流具有最高音量。 特别是这些流是说话的头,我认为通常只有其中一个人在说话,我试图找到哪一个。 由于nginx可以输出hls(Apple http实时流),我决定每隔几秒使用ffmpeg检查每个流的最后一部分。 实施例:检测视频量

的ffmpeg -f MP3 -i /my/path/camera67/123.ts -af “volumedetect” -f空的/ dev/null的

出于某种原因,max_volume总是零(max_volume:0.0 dB)和mean_volume对于音量似乎没有意义。

  1. 你知道为什么它总是零吗?
  2. 有没有一种有用的方法来理解mean_volume?
  3. 你能想出一个不同的工具可以给我音量(例如mediainfo或ffprobe)吗?

我也试过:

的ffmpeg -f lavfi -i amovie = /我的/路径/ camera67/123.ts,volumedetect

这一次我:

[mpegts @ 0x130bf40]流1的开始时间未在estimate_timings_from_pts中设置 [mpegts @ 0x130bf40]找不到流1的编解码参数(音频: aac([15] [0] [0] [0]/0x000F),0通道,fltp):未指定的采样率 考虑增加'分析'和'探测器大小'选项的值 [Parsed_amovie_0 @ 0x130bcc0]发现索引为'-1'的流 [lavfi @ 0x130abc0]用args'/my/path/camera67/123.ts'初始化过滤器'amovie'出错'amovie =/my/path/camera67/123.ts,volumedetect:无效参数

任何想法?

感谢, T.

+0

0 dB是最大音量。负值更安静,下降到负无穷。您正在测量信号电平,而不是声压。 – Brad

回答

0

所以这是发生了什么事。 我将MP3流式传输到nginx,将输入代码转换为不支持MP3的HLS段。 听着RTMP输出让我觉得音频工作正常,但是当我听到HLS输出时,我什么都没听到。 我改变了我的原始流到AAC,然后HLS流给出了正确的输出,并立即我看到音乐和平均和最大音量之间的关联。

谢谢大家。