检测视频音量

时间:2016-12-26 15:37:26

标签: audio nginx ffmpeg volume hls

我通过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对于音量似乎毫无意义。

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

      

    ffmpeg -f lavfi -i amovie = / my / path / camera67 / 123.ts,volumedetect

    这次我得到了:

      

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

    有什么想法吗?

    谢谢, 吨。

1 个答案:

答案 0 :(得分:0)

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

谢谢大家。