场景变化检测的时间码ffmpeg

时间:2015-03-16 06:10:31

标签: ffmpeg

美好的一天,当我使用ffmpeg时出现了一些问题。我们需要在视频中找到场景变化检测的时间码。使用以下命令:

ffmpeg -i inputVideo.mp4 -f image2 -vf“select = gt(scene \,。5)” - vsync vfr thumb%04d.png

它根据场景变化检测创建图像。我不知道如何将时间码添加到文本文件中。在此先感谢您的帮助!)

P.S。抱歉我的英文不好)

2 个答案:

答案 0 :(得分:0)

我们的想法是将ffprobeLibavfilter input virtual device (lavfi)一起使用。

您可以执行此操作以在控制台中列出时间戳:

ffprobe -show_frames -print_format compact -f lavfi "movie=test.mp4,select=gt(scene\,.8)" | egrep -o "pkt_pts_time=[0-9.]+"

其中.8是场景检测阈值。

-print_format还支持CSV,JSON,XML,可以更轻松地在其他程序中导入数据。

答案 1 :(得分:0)

您可以简单地使用以下命令:

ffmpeg inputvideo.mp4 -filter_complex "select='gt(scene,0.3)',metadata=print:file=time.txt" -vsync vfr img%03d.png

这只会将相关信息保存在time.txt文件中,如下所示:

frame:0    pts:108859  pts_time:1.20954
lavfi.scene_score=0.436456
frame:1    pts:285285  pts_time:3.16983
lavfi.scene_score=0.444537
frame:2    pts:487987  pts_time:5.42208
lavfi.scene_score=0.494256
frame:3    pts:904654  pts_time:10.0517
lavfi.scene_score=0.462327
frame:4    pts:2533781 pts_time:28.1531
lavfi.scene_score=0.460413
frame:5    pts:2668916 pts_time:29.6546
lavfi.scene_score=0.432326

帧是从头开始检测到的镜头更改的序列号。另外,请根据您的使用情况适当选择阈值(此处为0.3),以获得正确的输出