মৌলিক এনকোডিং

ভিডিও কম্প্রেশন বেসিক

এই বিভাগে VP9 এনকোডিংয়ের মৌলিক বিকল্পগুলি কভার করে, যার মধ্যে ফ্রেমের আকার, মৌলিক বিটরেট নিয়ন্ত্রণ এবং গুণমান রয়েছে।

আপনি যদি ভিডিও কম্প্রেশনে নতুন হন তাহলে ভিডিও কম্প্রেশনের প্রয়োজনীয়তা এবং এটি কীভাবে কাজ করে সে সম্পর্কে আরও জানতে আপনি এই ভিডিওটি দেখতে চাইতে পারেন৷

একটি সাধারণ এনকোড

নিম্নলিখিত FFmpeg কমান্ডটি Opus অডিও সহ একটি ইনপুট ফাইলকে VP9 ভিডিওতে রূপান্তর করে। এটি হল সবচেয়ে সহজ সম্ভাব্য এনকোড যা ডিফল্ট সেটিংস ব্যবহার করে।

ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm

এই FFmpeg এনকোড নিম্নলিখিত কমান্ড-লাইন পরামিতি ব্যবহার করে:

FFmpeg
-i <filename> ইনপুট ফাইলের নাম নির্দিষ্ট করে
-c:v libvpx-vp9 FFmpeg কে VP9 ভিডিও তৈরি করতে বলে
-c:a libopus FFmpeg কে Opus অডিও তৈরি করতে বলে
output.webm আউটপুট ফাইলের নাম নির্দিষ্ট করে

FFmpeg আপনার ব্যবহার করা আউটপুট ফাইলের নাম থেকে তৈরি করা ফাইলের ধরন অনুমান করে। এই উদাহরণে, FFmpeg একটি WebM ফাইল আউটপুট করবে কারণ আমরা output.webm

রেজোলিউশন

প্রতিটি ভিডিওর একটি ফ্রেমের আকার থাকে (পিক্সেল প্রস্থ এবং উচ্চতা নির্দেশ করে)। VP9 এনকোডিংয়ের জন্য আউটপুট ভিডিও ফ্রেমের আকার নিয়ন্ত্রণ করতে নিম্নলিখিত FFmpeg কমান্ড-লাইন প্যারামিটার ব্যবহার করা যেতে পারে:

FFmpeg
-vf scale=<width>x<height> ফ্রেমের প্রস্থ এবং উচ্চতা

উদাহরণস্বরূপ, নিম্নলিখিত FFmpeg কমান্ডটি একটি 640x480 VP9 WebM ভিডিও আউটপুট করবে।

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -c:v libvpx-vp9 -c:a libopus output.webm

ছোট রেজোলিউশনগুলি নিম্নমানের, কিন্তু বড় রেজোলিউশনগুলির জন্য আরও ব্যান্ডউইথ, ডিকোড করার জন্য আরও প্রক্রিয়াকরণ শক্তির প্রয়োজন হয় এবং পুরানো ডিভাইসগুলিতে সমর্থিত নাও হতে পারে৷ VP9 এর জন্য, 640x480 মোবাইল এবং ওয়েব ডিভাইসের বিস্তৃত পরিসরের জন্য একটি নিরাপদ রেজোলিউশন হিসাবে বিবেচিত হয়।

বিটরেট (বিট রেট)

VP9 বিভিন্ন বিটরেট মোড সমর্থন করে:

মোড
ধ্রুবক কোয়ান্টাইজার (Q) আপনাকে একটি নির্দিষ্ট কোয়ান্টাইজার মান নির্দিষ্ট করার অনুমতি দেয়; বিটরেট পরিবর্তিত হবে
সীমাবদ্ধ গুণমান (CQ) আপনাকে সর্বোচ্চ মানের স্তর সেট করতে দেয়। বিটরেট প্যারামিটারের মধ্যে গুণমান পরিবর্তিত হতে পারে
পরিবর্তনশীল বিটরেট (VBR) বিটরেটের সীমাবদ্ধতার মধ্যে সময়ের সাথে গুণমান এবং বিটরেটের ভারসাম্য বজায় রাখে
ধ্রুবক বিটরেট (CBR) গুণমান পরিবর্তিত হলে বিটরেট মোটামুটি স্থির রাখার প্রচেষ্টা

CQ মোড ফাইল-ভিত্তিক ভিডিওর জন্য সুপারিশ করা হয় (লাইভ স্ট্রিমিংয়ের বিপরীতে)। নিম্নলিখিত FFmpeg কমান্ড-লাইন পরামিতিগুলি CQ মোডের জন্য ব্যবহৃত হয়:

FFmpeg
-b:v <arg> লক্ষ্য বিটরেট সেট করে (যেমন 500k)
-minrate <arg>
-maxrate <arg>
সর্বনিম্ন এবং সর্বোচ্চ বিটরেট সেট করে।
-crf <arg> সর্বোচ্চ মানের স্তর সেট করে। বৈধ মানগুলি 0-63, নিম্ন সংখ্যাগুলি উচ্চ মানের৷

উদাহরণস্বরূপ, নিম্নলিখিত FFmpeg কমান্ড CQ মোড ব্যবহার করে একটি মাঝারি মানের 640x480 ভিডিও ফাইল তৈরি করবে, যার গড় বিটরেট 750kbps এবং সর্বোচ্চ গুণমান 33-এ সীমাবদ্ধ।

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm

আপনি যে গুণমান অর্জন করতে চান এবং ভিডিওর রেজোলিউশনের উপর নির্ভর করে বিটরেট পরিবর্তিত হবে। বিভিন্ন রেজোলিউশনে বিটরেটের জন্য সুপারিশের একটি সম্পূর্ণ সেট এখানে পাওয়া যাবে।

গুণমান এবং গতি সেটিংস

ভিডিও কম্প্রেস করা হল আউটপুটের গুণমান এবং এটি তৈরি করতে যে পরিমাণ সময় লাগে তার মধ্যে একটি ট্রেড-অফ। সাধারণভাবে বলতে গেলে, এনকোড করার জন্য আরও সময় দিয়ে আপনি সর্বদা উচ্চ গুণমান পেতে পারেন, তবে সর্বোচ্চ সম্ভাব্য গুণমান পেতে প্রয়োজনীয় সময়টি অব্যবহারিক হতে পারে।

VP9 গুণমান এবং গতির ভারসাম্য বজায় রাখতে বিভিন্ন সেটিংস অফার করে:

  • কোয়ালিটি সেটিং এনকোডারকে ভিডিও সংকুচিত করার জন্য যে পদ্ধতির প্রয়োজন তা নির্দেশ করে। উপলব্ধ মোডগুলি সেরা, ভাল এবং রিয়েলটাইম৷

  • থ্রেডিং সেটিংস এনকোডারকে ভিডিও এনকোড করতে একাধিক CPU থ্রেড ব্যবহার করার অনুমতি দেয়। এই সেটিংসগুলি কিছুটা গুণমান হ্রাস করতে পারে, তবে এনকোডিং এবং ডিকোডিং গতি উল্লেখযোগ্যভাবে উন্নত করতে পারে।

এই দুই ধরনের সেটিংস বিভিন্ন কমান্ড-লাইন পরামিতি দ্বারা নিয়ন্ত্রিত হয়:

FFmpeg
-threads এনকোডিংয়ের সময় ব্যবহার করার জন্য থ্রেডের সংখ্যা নির্দেশ করে।
-quality good , best বা realtime সেট করা হতে পারে
-speed গুণমান good বা realtime সেট করা হয়েছে কিনা তার উপর নির্ভর করে এই প্যারামিটারের বিভিন্ন অর্থ রয়েছে। স্পিড সেটিংস 0-4 good এবং best VoD-এর জন্য প্রযোজ্য, 0 সর্বোচ্চ মানের এবং 4 টি সর্বনিম্ন। Realtime বৈধ মান হল 5-8 ; কম সংখ্যা মানে উচ্চ মানের
-tile-columns টাইলিং ভিডিওটিকে আয়তক্ষেত্রাকার অঞ্চলে বিভক্ত করে, যা এনকোডিং এবং ডিকোডিংয়ের জন্য মাল্টি-থ্রেডিংয়ের অনুমতি দেয়। টাইলস সংখ্যা সবসময় দুই একটি শক্তি. 0 =1 টালি, 1 =2, 2 =4, 3 =8, 4 =16, 5 =32।

নিম্নলিখিত FFmpeg কমান্ডটি একটি 640x480 ফাইল তৈরি করবে যার গুণমান 'ভালো' তে সেট করা হবে এবং গতি 0 তে সেট করা হবে (উচ্চ মানের):

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
  output.webm

গুণমান এবং গতি সেটিংসের জন্য আপনার পছন্দগুলি রেজোলিউশন এবং উপলব্ধ প্রক্রিয়াকরণ শক্তির উপর নির্ভর করে পরিবর্তিত হতে পারে। সুপারিশের একটি সম্পূর্ণ সেট পরবর্তী বিভাগে পাওয়া যাবে।