我有一些与电视切换相对应的视频文件(一个有声音的 channel ,然后是一个没有声音的黑屏,然后又有新 channel 的声音)
我已经检测到几乎所有东西,但我想知道黑屏结束后音频出现多长时间。
基本上,我从视频中提取音频,并提供一个开始的帧,我想知道在哪个帧上再次有音频。
然后使用它,我可以轻松地计算出音频出现所花费的时间。
最佳答案
您可以使用blackdetect
和silencedetect
过滤器并关联结果。
用法示例:
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/