如何获取Blackdetect检测结果的起始帧编号?
获取Blackdetect黑帧起始时间对应帧编号的正确方法
方法一:手动计算(快速直接)
已知视频FPS为59.94,直接用黑帧起始时间乘以FPS得到帧编号,结果按需取整即可:
帧编号 = 黑帧起始时间(秒) × FPS
以你的检测结果为例:
- 第一个黑帧:
1.06773 × 59.94 ≈ 64→ 对应第64帧(若ffmpeg帧计数从0开始则为63,根据实际需求调整) - 第二个黑帧:
1.41808 × 59.94 ≈ 84→ 对应第84帧
方法二:用ffmpeg自动关联时间戳与帧编号
通过串联blackdetect和showinfo滤镜,让ffmpeg同时输出黑帧时间戳和每帧的编号信息,命令如下(注意使用英文半角引号):
ffmpeg -i e1.mov -vf "blackdetect=d=0:pix_th=0.40,showinfo" -an -f null - 2>blackdetect_frames.log
执行后查看日志文件:
- 找到
blackdetect输出的黑帧起始时间(如black_start:1.06773) - 在
showinfo的输出中,寻找pts_time与该起始时间最匹配的行,该行的n值就是对应帧编号(showinfo的n从0开始计数,需从1开始的话加1即可)
注意事项
- 避免使用中文引号,ffmpeg仅识别英文半角引号,否则会导致滤镜解析失败。
- 若视频存在可变帧率(VFR),手动计算可能有误差,此时优先使用方法二获取准确帧编号。
内容的提问来源于stack exchange,提问作者JustNoobish619
相关产品推荐
相关产品推荐

