أي إطار يحصل عليه FFMPEG عند تقليل معدل الإطار
سؤال
لدي بعض الفيديو الذي أود تحويله إلى صور للإطارات كل 2 ثانية.
على سبيل المثال ، إذا كان الفيديو 7 ثوانٍ عند 15 إطارًا في الثانية ، أود الحصول على إطارات 1 و 31 و 61 و 91.
الامر:
ffmpeg -i foo.mp4 -r 0.5 -f image2 -vcodec mjpeg foo%d.jpg
يبدو أنه يفعل ما أريد ، ولكن أي إطار يحصل عليه؟ 1 ، 31 ، 61 ، 91 أو 30 ، 60 ، 90 أو 13 ، 43 ، 73 ، 103؟
المحلول
الصورة الأولى ستكون من الإطار الأول.
لاحظ أنك قد تحصل جيدًا على صورة أو اثنتين آخرين تتوقعهما. أعتقد أن هذا بسبب التقريب و/أو أن FFMPEG يخلق صورًا نهائية. على سبيل المثال: هل مقطع الفيديو الخاص بك حقًا 7s؟ أم أن طوله 7.63 ثانية؟
نصائح أخرى
انتهى بي الأمر إلى القيام بما يلي استعارت إلى حد كبير من البرنامج التعليمي FFMPEG:
ffmpeg -v 3 -vsync 0 -sameq -i movie.mpr -f image2 "images-%03d.jpeg"
هذا يعطيني كل إطار من الفيلم باعتباره JPEG مرقمة 1 حتى نهاية الفيلم. قمت بعد ذلك بتصفية هذه الملفات باستخدام لغة برمجة نصية ، مع العلم أن معدل الإطار كان 30 إطارًا في الثانية ، للاستيلاء على كل إطار 60.