【问题标题】:Detecting video volume检测视频音量
【发布时间】: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 似乎对音量毫无意义。

  1. 您知道为什么它总是为零吗?
  2. 有没有帮助理解 mean_volume 的方法?
  3. 您能想出一个不同的工具来为我提供音量(例如 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


【解决方案1】:

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

谢谢大家。

【讨论】:

    猜你喜欢
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多