安装
Scenedetect
uv
uv pip install --upgrade scenedetect
使用
默认
scenedetect -i video.mp4 split-video
降低阈值
老电影,有淡入淡出。动作片 1520,纪录片 510
scenedetect -i A.Man.Escaped.1956-Scene-017.mp4 detect-content -t 12 list-scenes split-video
自适应检测器 detect-adaptive
老电影,叠化
scenedetect -i A.Man.Escaped.1956-Scene-017.mp4 detect-adaptive list-scenes split-video
检测淡黑场 detect-threshold
-m 0.5s:最小镜头长度
scenedetect -i A.Man.Escaped.1956-Scene-017.mp4 -m 0.5s detect-thrreshold list-scenes split-video
只检测不分割
scenedetect -i A.Man.Escaped.1956-Scene-017.mp4 detect-adaptive list-scenes
复制流不重新编码
scenedetect -i A.Man.Escaped.1956-Scene-017.mp4 -m 0.5s detect-adaptive list-scenes split-video --copy
Transnetv2
获取镜头帧与时间
transnetv2_pytorch A.Man.Escaped.1956-Scene-017.mp4
时间切割读 csv
awk -F ',' 'NR>1{ printf("ffmpeg -ss %s -to %s -i A.Man.Escaped.1956-Scene-017.mp4 -y shot_%02d.mp4\n",$5,$6,$1) }' A.Man.Escaped.1956-Scene-017_scenes.csv > run_ffmpeg.sh
帧切割读 csv (视频)
awk -F ',' 'NR>1{
printf("ffmpeg -i A.Man.Escaped.1956-Scene-017.mp4 -filter:v \"trim=start_frame=%s:end_frame=%d\" -y shot_%02d.mp4\n",$2,$3+1,$1)
}' shots.csv > cut_trim.sh
帧切割读 csv (音视频分开)
ffmpeg -i A.Man.Escaped.1956-Scene-017.mp4 -filter:v "trim=start_frame=0:end_frame=213" -filter:a "atrim=start_frame=0:end_frame=213" -y shot_01.mp4
帧切割读 csv (音视频)
awk -F ',' 'NR>1{
fps=23.98
v_start=$2
v_end=$3+1
a_start=v_start/fps
a_end=v_end/fps
printf("ffmpeg -i A.Man.Escaped.1956-Scene-017.mp4 -filter_complex \"[0:v]trim=start_frame=%s:end_frame=%d,setpts=PTS-STARTPTS;[0:a]atrim=start=%.4f:end=%.4f,asetpts=PTS-STARTPTS\" -y shot_%02d.mp4\n",v_start,v_end,a_start,a_end,$1)
}' shots.csv > cut_fix.sh