image - استخدام فميغ لتوليد الفيديو المصغرة دون أي تشويه




video ffmpeg (2)

إذا كان حجم الصورة المصغرة 200 × 100 ثابتا، فقم بتشغيلها

ffmpeg -ss 100 -i /tmp/video.mp4 -vf "scale='if(gt(dar,200/100),100*dar,200)':'if(gt(dar,200/100),100,200/dar)',setsar=1,crop=200:100"  -frames:v 1 image.jpg

يقوم عامل تصفية المقياس بفحص نسبة العرض إلى الارتفاع للمصدر والمقياس بحيث يتلاءم بعد واحد مع قماش 200x100 بينما يلتقط الآخر بعد ذلك، ما لم يكن ذلك مثاليا. ثم المحاصيل المحاصيل المحاصيل إلى 200x100 من المركز وبالتالي رعاية خارج الحدود المنطقة.

للحصول على صورة مصغرة 200x100 من مقطع فيديو، أفعل ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg . ولكن إذا كان الفيديو المصدر ليس في نفس نسبة العرض إلى الارتفاع كما 200x100 ، يحصل على مشوهة الصورة المصغرة (إما امتدت أو سحق، أفقيا أو رأسيا) ويبدو سيئا.

هل هناك طريقة تستطيع ffmpeg معرفة مثال أن الفيديو 500x200 هو 100px واسع جدا، وإزالة 50px من اليمين و 50px من اليسار، مما يجعل الفيديو 400x200 ؟ ولأن 400x200 هي نفس نسبة العرض إلى الارتفاع 200x100 ، فإن الصورة المصغرة لن يكون لها أي تشويه.

وأنا أعلم أن هناك أدوات أخرى يمكن أن تفعل ذلك إلى الصور المصغرة التي تم إنشاؤها بواسطة ffmpeg ، ولكن كنت تفضل القيام بذلك داخل ffmpeg وعدم الحاجة إلى معالجة الصور المصغرة مرة أخرى.


يمكنك استخدام الخيار force_original_aspect_ratio في مرشح المقياس .

ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -q:v 2 -vf "scale=200:100:force_original_aspect_ratio=increase,crop=200:100" image.jpg






video-processing