Ffmpeg দিয়ে ফাইলের আকার সীমাবদ্ধ কিভাবে?


10

আমি একটি লক্ষ্য বা সর্বোচ্চ 10 এমবি আকারের , 60 সেকেন্ড দৈর্ঘ্যের একটি ভিডিও এনকোড করতে চাই ।

আমি জানি দুটি উপায় আছে। এর একটি এফএফএমপিইগ-উইকিতে ব্যাখ্যা করা হয়েছে, এবং অন্যটি আমি নথিতে পেয়েছি। দুর্ভাগ্যক্রমে, কখন কোন পদ্ধতিটি ব্যবহার করবেন সে সম্পর্কে আমি কোনও ব্যাখ্যা পাইনি।

এই পদ্ধতির কোনও প্রস্তাবিত হয়? যদি তা না হয় তবে প্রতিটি পদ্ধতির আপসাইড / ডাউনসাইডগুলি কী কী?

1) ffmpeg-wiki তে বর্ণিত ভিডিওর দৈর্ঘ্যের সাথে মেলানোর জন্য বিট্রেট গণনা করুন এবং সেট করুন

(10 এমবি * 8192 [এমবিকে কিলোবাইটে রূপান্তর করে]) / 60 সেকেন্ড = ~ 1365 কেবিট / গুলি মোট বিটরেট 1365 কে - 128 কে (পছন্দসই অডিও বিটরেট) = 1237 কে ভিডিও বিটরেট

ffmpeg -y -i input -c:v copy -preset medium -b:v 1237k -pass 1 -c:a copy -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 1237k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4

2) -fs প্যারামিটারটি ব্যবহার করুন এবং ffmpeg এটি বের করার সুযোগ দিন।

ffmpeg -i input -c:v copy -c:a copy -preset medium -crf 23 -fs 10485760 output.mp4

1
আপনার 1 ম উদাহরণে, প্রথম পদক্ষেপটি libx264হিসাবে ব্যবহার করা উচিত c:v। ইন fsউদাহরণস্বরূপ, আপনি ভিডিও ট্রান্সকোডিং করা হয় না, যেহেতু -c:v copyব্যবহার করা হয়। সুতরাং, presetএবং crfএরও কোনও প্রভাব নেই।
জ্ঞান

এটি আমার জন্য সহায়ক ছিল: stackoverflow.com/a/34547102/470749
রায়ান

উত্তর:


11

fsপরামিতি সঙ্কেতাক্ষরে লিখা বন্ধ হবে একবার এটি এর মান হিট। সুতরাং, যদি 10MB15 তম সেকেন্ডটি এনকোড করার সময় যদি আউটপুট চিহ্নটি হিট করে তবে তা আপনার আউটপুট ফাইলের সময়কাল।

আপনি যদি নিশ্চিত করতে চান যে পুরো ফাইলটি এনকোড হয়েছে তবে এটি সেট লক্ষ্য আকারটি অতিক্রম করছে না, তবে বিট্রেট পদ্ধতিটি ব্যবহার করুন। লক্ষ্য আকারের মধ্যে ম্যাক্সিং ওভারহেড এবং অন্যান্য ডেটা সমন্বিত করতে, আপনার ভিডিও বিটরেটটি সামান্য কম সেট করুন, বলুন, 1-2%

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.