Tôi đang cố gắng trích xuất "chính xác 1 khung hình cho mỗi 10" khung hình của video (tức là trích xuất 1, để lại 9 rồi lặp lại) cho mục đích khoa học. Video có 105 khung hình, 3,5 giây, 29,97 khung hình / giây (h.264, .mov, được sản xuất bởi Nikon D3100).
Tôi đã tải nó lên đây .
VLC
Lệnh dưới đây sẽ tạo ra 10 khung hình, nhưng nó chỉ tạo ra 6 hình ảnh. Tôi đã thử các tỷ lệ cảnh khác nhau và cả hai đều không tạo ra số khung hình chính xác (thậm chí gần không đúng).
vlc 1.mov --video-filter=scene --vout=dummy --scene-ratio=10 --scene-prefix=img- --scene-path=. vlc://quit
Ai đó vui lòng cho tôi biết vấn đề là gì?
FFmpeg
FFmpeg dường như không có một lệnh chính xác cho mục đích của tôi. Lệnh bên dưới trích xuất 3 khung hình trong mỗi giây, nhưng vì FPS không chính xác là 30 (chứ không phải 2,97), điều đó sẽ không mang lại kết quả chính xác cho tôi.
Ngoài ra, ngay cả FFmpeg cũng không đưa ra số lượng khung chính xác bằng lệnh này. Trong 3,5 giây video tôi mong đợi tối đa 10 khung hình, nhưng những gì tôi nhận được là 12 khung hình!
ffmpeg -i 1.mov -y -an -sameq -r 3 -f image2 -vcodec mjpeg %03d.jpg
Làm thế nào tôi có thể đạt được những gì tôi muốn?
-sameq
không làm những gì bạn có thể nghĩ, và đã bị xóa khỏi phiên bản hiện tại (ffmpeg thực sự, tôi không chắc nó có trong ffmpeg giả của Ubuntu không). Sử dụng qscale thay thế.