video - واخيرا - كيفية استخراج 1 لقطة لشريط فيديو مع ffmpeg في وقت معين؟




واخيرا تطبيق تصوير شاشة الايفون فيديو (2)

هناك العديد من البرامج التعليمية والأشياء التي توضح كيفية استخراج لقطات شاشة متعددة من مقطع فيديو باستخدام ffmpeg. قمت بتعيين -r ويمكنك حتى بدء مبلغ معين في.

لكنني أريد فقط لقطة شاشة واحدة ، يقول 01:23:45. أو لقطة شاشة واحدة بنسبة 86٪.

كل هذا ممكن مع ffmpegthumbnailer لكنه تبعية أخرى لا أريد الاعتماد عليها. أريد أن أكون قادرا على القيام بذلك مع ffmpeg.


استخدم الخيار -ss :

ffmpeg -ss 01:23:45 -i input -vframes 1 -q:v 2 output.jpg
  • بالنسبة إلى مخرجات JPEG ، استخدم -q:v للتحكم في جودة المخرجات. النطاق الكامل هو مقياس خطي من 1 إلى 31 ، حيث ينتج عن انخفاض القيمة جودة أعلى. 2-5 هو مجموعة جيدة لمحاولة.

  • يوفر مرشح التحديد طريقة بديلة لاحتياجات أكثر تعقيدًا مثل تحديد أنواع إطارات معينة فقط ، أو 1 لكل 100 ، إلخ.

  • وضع -ss قبل الإدخال سيكون أسرع. راجع FFmpeg Wiki: البحث وهذا مقتطف من وثائق أداة ffmpeg cli :

موقف -ss (الإدخال / الإخراج)

عند استخدامه كخيار إدخال (قبل -i ) ، يبحث في ملف الإدخال هذا على الموضع. لاحظ أنه في معظم التنسيقات ، لا يمكن البحث بدقة ، لذلك سيسعى ffmpeg إلى أقرب نقطة بحث قبل الموضع. عند تمكين تحويل الشفرة و -accurate_seek (الافتراضي) ، سيتم فك تشفير هذه الشريحة الإضافية بين نقطة البحث -accurate_seek . عند القيام بنسخ الدفق أو عند استخدام -noaccurate_seek ، سيتم الحفاظ عليه.

عند استخدامه كخيار للمخرجات (قبل اسم ملف الإخراج) ، يتم فك التشفير ولكنه يتجاهل الإدخال حتى تصل الطوابع الزمنية إلى الموضع.

قد يكون الموضع إما بالثواني أو hh:mm:ss[.xxx] .


يمكن لـ FFMpeg القيام بذلك عن طريق السعي إلى الطابع الزمني المحدد واستخراج إطار واحد بالضبط كصورة ، انظر على سبيل المثال:

ffmpeg -i input_file.mp4 -ss 01:23:45 -vframes 1 output.jpg

دعونا شرح الخيارات:

-i input file           the path to the input file
-ss 01:23:45            seek the position to the specified timestamp
-vframes 1              only handle one video frame
output.jpg              output filename, should have a well-known extension

تقبل المعلمة -ss قيمة في النموذج HH:MM:SS[.xxx] أو كرقم بالثواني. إذا كنت بحاجة إلى نسبة مئوية ، فأنت بحاجة إلى حساب مدة الفيديو مسبقًا.





ffmpeg