নতুন ffmpeg সংস্করণ সহ, আপনি scale
ফিল্টার force_original_aspect_ratio
বিকল্প ব্যবহার করতে পারেন । উদাহরণস্বরূপ, কোনও চিত্রকে উপরে না রেখে 1280 × 720 এ ফিট করতে ( আরও তথ্যের জন্য এই পোস্টটি দেখুন):
ffmpeg -i input.mp4 -filter:v "scale='min(1280,iw)':min'(720,ih)':force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" output.mp4
এখানে, scale
ফিল্টারটি যদি ইনপুট ভিডিওটির চেয়ে বড় হয় তবে 1280 × 720 এ স্কেল করে। এটি যদি ছোট হয় তবে এটি উপুড় করা হবে না। pad
ফিল্টার লক্ষ্য আকার থেকে তার অনুপাত বা আকার পৃথক 1280 × 720 আউটপুট ভিডিও এনে ক্ষেত্রে প্রয়োজনীয়।
পুরানো ffmpeg সংস্করণ সহ, কিছুটা হ্যাকি ওয়ার্কারআউন্ড রয়েছে। প্রথমে আপনার আউটপুটটির প্রস্থ, উচ্চতা এবং দিক অনুপাত নির্ধারণ করুন। এটি আমাদের কিছু টাইপ করে সংরক্ষণ করবে।
width=640; height=360
aspect=$( bc <<< "scale=3; $width / $height") # <= floating point division
এখন, জিম ওয়ারোরাল লিখেছেন যে সুপার কমপ্লেক্স ফিল্টার কমান্ডটি প্রয়োগ করি :
ffmpeg -i input.mp4 -vf "scale = min(1\,gt(iw\,$width)+gt(ih\,$height)) * (gte(a\,$aspect)*$width + \
lt(a\,$aspect)*(($height*iw)/ih)) + not(min(1\,gt(iw\,$width)+gt(ih\,$height)))*iw : \
min(1\,gt(iw\,$width)+gt(ih\,$height)) * (lte(a\,$aspect)*$height + \
gt(a\,$aspect)*(($width*ih)/iw)) + not(min(1\,gt(iw\,$width)+gt(ih\,$height)))*ih" \
output.mp4
আমি এগুলি কী করে তা বোঝাতে সত্যিই যাব না, তবে মূলত আপনি কোনও ভিডিও ফিড করতে পারেন এবং এটি কেবল ডাউনস্কেলেই হবে, আপস্কেল নয়। আপনি যদি এটির জন্য প্রস্তুত থাকেন তবে আপনি ফিল্টারটিকে তার পৃথক প্রকাশগুলিতে বিচ্ছিন্ন করতে পারেন। এটি সংক্ষিপ্ত করা সম্ভব হতে পারে তবে এটি সেইর মতো কাজ করে।