Saya mencoba mengekstraksi "persis 1 frame dari setiap 10" frame video (yaitu ekstrak 1, tinggalkan 9 lalu ulangi) untuk tujuan ilmiah. Video ini 105 bingkai, 3,5 detik, 29,97fps (h.264, .mov, diproduksi oleh Nikon D3100).
Saya sudah mengunggahnya di sini .
VLC
Perintah di bawah ini harus menghasilkan 10 frame, tetapi hanya menghasilkan 6 gambar. Saya mencoba rasio adegan yang berbeda dan tak satu pun dari mereka menghasilkan jumlah bingkai yang benar (bahkan tidak dekat dengan benar).
vlc 1.mov --video-filter=scene --vout=dummy --scene-ratio=10 --scene-prefix=img- --scene-path=. vlc://quit
Apakah seseorang tolong beri tahu saya apa masalahnya?
FFmpeg
FFmpeg tampaknya tidak memiliki perintah persis untuk tujuan saya. Perintah di bawah ini mengekstrak 3 frame dari setiap detik, tetapi karena FPS tidak tepat 30 (bukan 2,97), itu tidak akan menghasilkan hasil yang benar untuk saya.
Selain itu bahkan FFmpeg tidak memberikan jumlah frame yang benar dengan perintah ini. Untuk 3,5 detik video, saya berharap paling banyak 10 frame, tapi yang saya dapatkan adalah 12 frame!
ffmpeg -i 1.mov -y -an -sameq -r 3 -f image2 -vcodec mjpeg %03d.jpg
Bagaimana saya bisa mencapai apa yang saya inginkan?
-sameq
tidak melakukan apa yang Anda pikirkan, dan telah dihapus dari versi saat ini (ffmpeg yang sebenarnya, saya tidak yakin apakah itu ada di ffmpeg palsu Ubuntu). Gunakan qscale sebagai gantinya.