FFmpeg ভিডিওগুলি থেকে চিত্রগুলি ক্যাপচার করতে পারে যা থাম্বনেল হিসাবে ভিডিও উপস্থাপন করতে ব্যবহার করা যেতে পারে। এটি করার সর্বাধিক সাধারণ উপায়গুলি এফএফপিপেইগ উইকিতে ধরা পড়ে ।
তবে, আমি কিছু বিরতিতে এলোমেলো ফ্রেম তুলতে চাই না। দৃশ্যের পরিবর্তনগুলি ক্যাপচার করতে আমি এফএফপিপেতে ফিল্টার ব্যবহার করে কিছু বিকল্প পেয়েছি:
ফিল্টারটি thumbnailভিডিওতে সর্বাধিক প্রতিনিধি ফ্রেমগুলি সন্ধান করার চেষ্টা করে:
ffmpeg -i input.mp4 -vf "thumbnail,scale=640:360" -frames:v 1 thumb.png
এবং নিম্নলিখিত কমান্ডটি কেবলমাত্র এমন ফ্রেমগুলি নির্বাচন করে যা পূর্বের তুলনায় 40% এর বেশি পরিবর্তন (এবং সম্ভবত দৃশ্য পরিবর্তনগুলি হয়) এবং 5 পিএনজির ক্রম তৈরি করে।
ffmpeg -i input.mp4 -vf "select=gt(scene\,0.4),scale=640:360" -frames:v 5 thumb%03d.png
উপরের কমান্ডগুলির জন্য তথ্য ক্রেডিট ফ্যাবিও সোনাতিকে । দ্বিতীয় চিত্রটি আরও ভাল মনে হয়েছিল কারণ আমি এন ইমেজ পেতে পারি এবং সেরাটি বেছে নিতে পারি। আমি এটি চেষ্টা করেছিলাম এবং এটি একই চিত্রটি 5 বার উত্পন্ন করে।
আরও কিছু তদন্ত আমাকে নেতৃত্ব দিয়েছে:
ffmpeg -i input.mp4 -vf "select=gt(scene\,0.5)" -frames:v 5 -vsync vfr out%02d.png
-vsync vfrআপনি বিভিন্ন চিত্র পেতে নিশ্চিত করে। এটি এখনও সর্বদা ভিডিওর প্রথম ফ্রেম বেছে নিয়েছে, বেশিরভাগ ক্ষেত্রে প্রথম ফ্রেমটি ক্রেডিট / লোগো এবং অর্থবহ নয়, তাই আমি -ssভিডিওর প্রথম 3 সেকেন্ড ফেলে দেওয়ার জন্য একটি 3 যুক্ত করেছি ।
আমার চূড়ান্ত আদেশটি এরকম দেখাচ্ছে:
ffmpeg -ss 3 -i input.mp4 -vf "select=gt(scene\,0.5)" -frames:v 5 -vsync vfr out%02d.jpg
এটিই আমি করতে পারি সেরা। আমি লক্ষ্য করেছি যেহেতু আমি কেবল 5 টি ভিডিও বাছাই করেছি, সেগুলি সমস্তই বেশিরভাগ ভিডিওর শুরু থেকেই এবং ভিডিওতে পরবর্তী সময়ে ঘটে যাওয়া গুরুত্বপূর্ণ দৃশ্যের হাতছাড়া হতে পারে may
অন্য কোনও উন্নত বিকল্পের জন্য আমি আপনার মস্তিষ্ক বেছে নিতে চাই।
mjpegপাশাপাশি আমার জন্য এনকোডার, এবং আমি চেক করা jpegoptimএবং exiv2, উভয়ই আপনার উদাহরণ কমান্ড থেকে সব JPG, ফলাফল নিয়ে আমার জন্য ভাল কাজ।
libopenjpeg.. নিশ্চিত না যে এটি কোনও পার্থক্য করে কিনা।