检测视频中的哪一帧有音频

dro*_*rov 0 c# audio ffmpeg

我有一些与电视切换相对应的视频文件(一个频道有声音,然后是黑屏,没有声音,然后新频道再次发出声音)

我已经检测到几乎所有内容,但我想知道黑屏结束后需要多长时间才能出现音频。

基本上,我从视频中提取音频并给出起始帧,我想知道在哪一帧再次出现一些音频。

然后使用它我可以轻松计算出音频出现所需的时间。

aer*_*tal 5

您可以使用blackdetectsilencedetect过滤器并将结果关联起来。

用法示例:

ffmpeg -i <input> -filter:v blackdetect=d=0.1 -filter:a silencedetect=d=0.1 -f null /dev/null
Run Code Online (Sandbox Code Playgroud)

其中0.1是最短持续时间(正浮点值,以秒为单位)。

输出示例:

[blackdetect @ 0x35f65e0] black_start:0.0464444 black_end:0.566444 black_duration:0.52
[blackdetect @ 0x35f65e0] black_start:5.16644 black_end:5.32644 black_duration:0.16
[blackdetect @ 0x35f65e0] black_start:15.9264 black_end:16.1664 black_duration:0.24
[blackdetect @ 0x35f65e0] black_start:33.4464 black_end:33.6064 black_duration:0.16
[blackdetect @ 0x35f65e0] black_start:63.9664 black_end:64.7664 black_duration:0.8
[silencedetect @ 0x35f8700] silence_start: 67.0521
[silencedetect @ 0x35f8700] silence_end: 67.9184 | silence_duration: 0.866236
Run Code Online (Sandbox Code Playgroud)