↓ 跳过正文
  1. 科学/
  2. 计算机/
  3. 工具/
  4. Scenedetect/

install

安装

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