Tôi đã thấy chủ đề này, gần như chính xác những gì tôi muốn, nhưng tôi thực sự đang tìm cách tách để phát hiện cảnh.
Tự động chia các tệp video .mov lớn thành các tệp nhỏ hơn ở các khung màu đen (thay đổi cảnh)?
Ví dụ: giả sử tôi có một người phụ nữ trên màn hình từ 0h01 -> 0:05, sau đó một người đàn ông ở một cảnh khác từ 0:06 -> 0:09 và một phụ nữ thứ hai trên màn hình từ 0h10 - > 0:14
Điều này (lý tưởng) sẽ tạo ra ba video clip khác nhau. Tôi thực sự muốn nó xuống mức khung hình, nếu có thể, với tính năng tự động phát hiện khi cảnh thay đổi.
** CẬP NHẬT **
Ok, tôi đã có một khởi đầu tuyệt vời. Tôi đã thực hiện những điều sau bằng cách sử dụng FFPcoat:
ffprobe -show_frames -of compact=p=0 -f lavfi "movie=foo.mp4,select=gt(scene\,.4)" > foo.txt
Cung cấp cho tôi một danh sách các dấu thời gian có vẻ chính xác! Bây giờ bước tiếp theo - làm thế nào để tôi lấy danh sách dấu thời gian này và nhập lại chúng vào ffmpeg để phân chia nó? Đây là một ví dụ về dấu thời gian.
media_type=video|key_frame=1|pkt_pts=972221|pkt_pts_time=10.802456|pkt_dts=972221|pkt_dts_time=10.802456|best_effort_timestamp=972221|best_effort_timestamp_time=10.802456|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=5083698|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.503364
media_type=video|key_frame=1|pkt_pts=2379878|pkt_pts_time=26.443089|pkt_dts=2379878|pkt_dts_time=26.443089|best_effort_timestamp=2379878|best_effort_timestamp_time=26.443089|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=12736403|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=1.000000
media_type=video|key_frame=1|pkt_pts=2563811|pkt_pts_time=28.486789|pkt_dts=2563811|pkt_dts_time=28.486789|best_effort_timestamp=2563811|best_effort_timestamp_time=28.486789|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=13162601|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.745838
media_type=video|key_frame=1|pkt_pts=2627625|pkt_pts_time=29.195833|pkt_dts=2627625|pkt_dts_time=29.195833|best_effort_timestamp=2627625|best_effort_timestamp_time=29.195833|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=13485087|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.678877