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
我成功地使用 -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 是以
使用 select 之前的 settb 过滤器设置时基。对于 30 fps CFR 流,
-vf settb=1/30,select='gte(scene,0.4)',metadata=print:file=shotcuts.txt