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

我已经检测到几乎所有东西,但我想知道黑屏结束后音频出现多长时间。

基本上,我从视频中提取音频,并提供一个开始的帧,我想知道在哪个帧上再次有音频。

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

最佳答案

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

用法示例:

ffmpeg -i <input> -filter:v blackdetect=d=0.1 -filter:a silencedetect=d=0.1 -f null /dev/null

其中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

关于c# - 检测视频在哪一帧上存在音频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39163168/

10-10 09:09