FFMPEG:以帧为单位输出场景变化时间

FFMPEG: output scene change times in frames

我成功地使用 -vf select='gte(scene,0.4)',metadata=print:file=shotcuts.txt 命令让 FFMPEG 检测场景变化并将结果输出到文件。是否可以强制 pts 字段以帧为单位而不是默认值,这似乎因视频格式而异(例如,AVI 文件的帧数,MOV/MP4 的纳秒数)?

例如,处理一个 AVI 文件,以帧为单位输出时间戳:

帧0分151
第 1 帧 206

而 MP4 文件输出为媒体时间:

帧0分540000
第 1 帧 738000

PTS 代表 Presentation Timestamps,因此不能在框架中。但是,PTS 是以 表示的,因此如果时基设置为 1/fps,则 PTS 和帧索引将重合。这仅适用于帧速率恒定且具有整数帧速率的流。

使用 select 之前的 settb 过滤器设置时基。对于 30 fps CFR 流,

-vf settb=1/30,select='gte(scene,0.4)',metadata=print:file=shotcuts.txt