audio - 检测视频音量

标签 audio nginx ffmpeg volume http-live-streaming

我正在通过 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 对于音量似乎毫无意义。
  • 你知道为什么它总是为零吗?
  • 有没有帮助理解 mean_volume 的方法?
  • 你能想到一个不同的工具可以给我音量吗(例如 mediainfo 或 ffprobe)?

  • 我也试过:

    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/

    相关文章:

    nginx - 在没有 GCP 负载均衡器的情况下创建 kubernetes nginx ingress

    ruby-on-rails - Rails 使用 send_file 发送 0 字节文件

    c++ - FFMPEG C++体积过滤器

    android - 如何在android中使用ffmpeg反转视频?

    node.js - Page.startScreencast Chrome DevTools 协议(protocol)低 FPS 问题

    c# - 在 Powershell 中访问音乐文件元数据

    jquery - 即时在keydown()上重放音频

    java - JavaFX无法播放mp3文件

    machine-learning - 如何处理不同的音频格式进行音频分类?

    ssl - nginx ldap模块错误