বিস্তারিতভাবে VP9 বিটরেট মোড

ভূমিকা

যদিও আমরা আমাদের বেসিক এনকোডিং পৃষ্ঠাগুলিতে বিটরেট মোড সম্পর্কে উচ্চ-স্তরের বিশদ বিবরণ দিই, তারা শুধুমাত্র CQ (সংবদ্ধ গুণমান) মোডকে সম্বোধন করে।

এই দস্তাবেজটি বিভিন্ন পরিস্থিতির জন্য অপ্টিমাইজ করার জন্য আপনি VP9 বিটরেটগুলি তৈরি করতে পারেন এমন অন্যান্য ব্যবহারিক উপায়গুলির বিবরণ দেয়৷ নীচের উদাহরণগুলি FFmpeg ব্যবহার করে।

সঙ্কোচন

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

এটি অর্জনের জন্য ব্যবহৃত মূল কৌশলগুলির মধ্যে একটি হল কোয়ান্টাইজেশন । একটি কোয়ান্টাইজার গাণিতিকভাবে চিত্রের বিভিন্ন ডিজিটাইজড উপাদানকে সরল করে। উদাহরণস্বরূপ এটি ব্যবহৃত রঙের পরিসর কমাতে পারে এবং আরও কম রঙের পরিসরের মধ্যে সূক্ষ্ম রেজোলিউশনের অনুভূত অভাবকে "মসৃণ" করতে ডেটাতে গাণিতিক ফাংশন সম্পাদন করতে পারে। এই ধরনের অনেক ফাংশন আছে.

কোয়ান্টাইজেশন (বা "Q") তার উইকিপিডিয়া নিবন্ধে ভালভাবে বর্ণিত হয়েছে।

VP9-এ, ট্রান্সফর্ম সহগগুলিতে পরিমাপ করা হয়। এটি এনকোডিং যোগ করে অনুভূত গুণমান বজায় রাখতে প্রয়োজনীয় বিটরেট কমিয়ে দেয়।

পরিশেষে যখন বেশি পরিমাণে পরিমাপ করা হয় (একটি উচ্চতর Q সংখ্যা), বিবরণ হারিয়ে যায় এবং গুণমান কম থাকে, কিন্তু ফ্রেম সংরক্ষণ করতে কম ডেটার প্রয়োজন হয়। বেশিরভাগ ক্ষেত্রে, VP9 এনকোডার প্রতিটি ফ্রেমের জটিলতার উপর নির্ভর করে সময়ের সাথে Q পরিবর্তন করে তার বিটরেট লক্ষ্য অর্জন করে।

কেস অপ্টিমাইজেশান ব্যবহার করুন

ব্যবহারকারীকে তাদের নির্দিষ্ট প্রয়োজনে VP9 কম্প্রেশনকে "টিউন" করার অনুমতি দেওয়ার জন্য অনেকগুলি প্রোগ্রামিং ইন্টারফেসের মাধ্যমে প্রাথমিক কম্প্রেশনের সময় গুণমান এবং বিটরেটের ভারসাম্য সামঞ্জস্য করা সম্ভব।

এনকোডারের গতি, গুণমান এবং বিটরেটের মধ্যে একটি স্লাইডিং ট্রেডঅফ রয়েছে।

  • যদি একজন ব্যবহারকারী মানের দিকে মনোনিবেশ করেন, তবে তাদের হয় দীর্ঘ এনকোড সময়ের জন্য প্রস্তুত থাকতে হবে বা দ্রুত এবং আরও প্রচুর প্রক্রিয়াকরণ সংস্থান সরবরাহ করতে হবে।

  • যদি কোনও ব্যবহারকারীর আউটপুট VP9 এনকোড করা ফাইলটি ছোট এবং দ্রুত বিতরণ করা যায় তা নিশ্চিত করার দিকে মনোনিবেশ করা হয়, তবে তাদের অবশ্যই কোয়ান্টাইজার দ্বারা চিত্রটি প্রক্রিয়াকরণের সময় কমানোর জন্য প্রস্তুত থাকতে হবে এবং এর ফলে একটি নিম্ন বিবরণ হবে কোয়ান্টাইজার কাজ করতে পারে।

  • যদি একজন ব্যবহারকারী বিশুদ্ধভাবে ডেলিভারির গতিতে মনোনিবেশ করেন (উদাহরণস্বরূপ একটি লাইভ ওয়েবকাস্ট বা একটি দ্বি-মুখী ভিডিও কনফারেন্সে) তাহলে পরিমাপকরণ সম্পূর্ণরূপে সীমাবদ্ধতা হতে পারে যে হারে ডেটার ব্যবহারযোগ্য বাইট একটি নেটওয়ার্কে পৌঁছে দেওয়া যেতে পারে (অর্থাৎ , "বিটরেট" )।

সঠিক পছন্দ প্রতিটি ব্যবহারের ক্ষেত্রে অত্যন্ত নির্দিষ্ট হবে। আপনার ব্যবহারের ক্ষেত্রে এই ব্যালেন্স সামঞ্জস্য করা সহজ করতে, VP9 চারটি "বিটরেট মোড"-এ সহজবোধ্য কনফিগারেশন সমর্থন করে৷

VP9 বিটরেট মোড

আসুন VP9 সমর্থন করে এমন প্রধান বিটরেট মোডগুলি দেখে শুরু করি:

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

প্র

Q মোড চার্ট

কনস্ট্যান্ট কোয়ান্টাইজার মোড এমন পরিস্থিতিগুলির জন্য একটি ভাল পছন্দ যেখানে ফাইল-আকার এবং বিটরেট সম্পর্কে উদ্বেগ চূড়ান্ত গুণমানের সম্পূর্ণ অধীনস্থ।

Q সেটিংসের ক্ষেত্রে ব্যবহারের ক্ষেত্রে ডিজিটাল সিনেমা, ডিজিটাল সম্পাদনা স্যুট বা ডিজিটাল সাইনেজ অ্যাপ্লিকেশনে পাওয়া যেতে পারে, যেখানে বিষয়বস্তু একটি ভৌত ​​সঞ্চয়স্থানের মাধ্যমে বা অনিয়ন্ত্রিত সময়ে বিতরণ করা যেতে পারে -- আসলে ব্যবহৃত সামগ্রীর আগে থেকেই, এবং যেখানে পছন্দসই আউটপুট সর্বোচ্চ ভিজ্যুয়াল মানের হতে হবে।

VP9 Q মোড বিটরেট অপ্টিমাইজেশান

ধ্রুবক কোয়ান্টাইজার মোডের জন্য ন্যূনতম কনফিগারেশন প্রয়োজন। এর নাম অনুসারে, Q মোডটি লক্ষ্য "গুণমান" স্তরে কোয়ান্টাইজার বজায় রাখার উপর ফোকাস করে এবং কোয়ান্টাইজারকে ডেটার প্রবাহ নির্ধারণ করার অনুমতি দেয় যা এটি প্রক্রিয়া করতে চায়। ব্যবহারকারীর যে সমস্ত সংজ্ঞায়িত করা দরকার তা হল লক্ষ্য গুণমান।

বেসিক এনকোডিং নিবন্ধে একটি ইমেজ প্রসেসিং ফোকাস (বিটরেট ফোকাস নয়) থেকে লক্ষ্য মানের সুনির্দিষ্ট বিষয়ে আরও তথ্য রয়েছে।

Q মোড বিটরেট অপ্টিমাইজেশানের জন্য নিম্নলিখিত FFmpeg কমান্ড-লাইন পরামিতিগুলি ব্যবহার করুন:

ffmpeg
-b:v 0 ভিডিও বিটরেটকে 0 হিসাবে চিহ্নিত করে আমরা স্পষ্টভাবে "Q" মোড সেট করি
-g <arg> ফ্রেমে কীফ্রেম ব্যবধান সেট করে (ডিফল্ট 240)
-crf <arg> সর্বোচ্চ মানের স্তর সেট করে। বৈধ মান 0-63। নিম্ন সংখ্যা উচ্চ মানের হয়
-quality good -speed 0 ডিফল্ট এবং বেশিরভাগ অ্যাপ্লিকেশনের জন্য প্রস্তাবিত। best হল একটি গবেষণার টুল, যেখানে -quality good -speed 0 চেয়ে প্রান্তিক উন্নতি
-lossless লসলেস মোড

Q মোড বিটরেট: FFmpeg উদাহরণ

প্রথম উদাহরণটি একটি অত্যন্ত চরম Q মোড সেটিং এবং শুধুমাত্র চিত্রের জন্য প্রদান করা হয়েছে । (এমনকি এই উদাহরণগুলিতে 120 সেকেন্ডের ক্লিপ প্রক্রিয়াকরণে বেশ কয়েক ঘন্টা সময় লাগবে এবং উত্পাদিত আউটপুট ফাইলটি সাধারণত মূল উত্সের চেয়ে অনেক বড়।)

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -g 1 -b:v 0 -crf 0 -quality good \
  -speed 0 -lossless 1 -c:a libvorbis Q_g_1_crf_0_120s_tears_of_steel_1080p.webm.webm

-crf এর প্রভাব তুলনা করতে, নিম্নলিখিত উদাহরণগুলি শুধুমাত্র -crf পরিবর্তিত হয়। মনে রাখবেন যে -g সংজ্ঞায়িত করা হয়নি , তাই 240 -এ ডিফল্ট হবে, এবং অনুশীলনে -crf ডিফল্ট 10 , তাই তিনটি উদাহরণের দ্বিতীয়টিতে প্যারামিটার অন্তর্ভুক্ত না করেই আমাদের একই ফলাফল হত:

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 0 -quality good \
  -speed 0 -c:a libvorbis Q_crf_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -c:a libvorbis Q_crf_10_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 63 -quality good \
  -speed 0 -c:a libvorbis Q_crf_63_120s_tears_of_steel_1080p.webm

এই উদাহরণগুলির আউটপুট ডিস্কের আকারে ভিন্ন। -crf 0 -এ সেট করা হলে ফাইলটি ছিল 711.8MB, -crf 10 -এ সেট করা হলে ফাইলের আকার ছিল 125.3MB, এবং -crf 63 -এ সেট করা হলে ফাইলটি ছিল 4.5MB। খুব সহজ ভাষায় এটি হাইলাইট করে যে আমরা -crf আর্গুমেন্টের মান বাড়িয়ে ভিপি 9-এনকোড করা ফাইলের গুণমান কমিয়েছি। সমস্ত আউটপুট ফাইলের একটি সম্পূর্ণ সারাংশ নীচের ফলাফলের সারণীতে রয়েছে।

আসুন এখন -g সেটিং পরিবর্তনের প্রভাব তুলনা করি।

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 1 -b:v 0 -quality good \
  -speed 0  -c:a libvorbis Q_g_1_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 240 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_240_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -g 480 -b:v 0 -quality good \
  -speed 0 -c:a libvorbis Q_g_480_120s_tears_of_steel_1080p.webm

আমরা লক্ষ্য করেছি যে -g 1 সেটিং একটি খুব বড় ফাইল তৈরি করে, আকারে 25.9MB। পরিবর্তনের সাথে এটির তুলনা করুন -g 240 (স্পষ্টভাবে ডিফল্টের মতোই সেট করা) যেখানে আমরা একটি 4.5MB ফাইল এবং -g 480 যেখানে আমরা একটি 4.4MB ফাইল দিয়ে শেষ করি।

CQ

CQ ফাইল-ভিত্তিক ভিডিওর জন্য একটি প্রস্তাবিত মোড।

CQ মোড চার্ট

বেশিরভাগ বিষয়বস্তুর প্রকারের জন্য, আমরা বিটরেট ক্যাপ সহ সীমাবদ্ধ গুণমান (CQ) মোড ব্যবহার করার পরামর্শ দিই। বেশিরভাগ ভিডিওতে উচ্চ-মোশন দৃশ্যের মিশ্রণ থাকে (যেমন, অ্যাকশন সিকোয়েন্স) এবং কম বিশদ সহ দৃশ্য (যেমন, কথোপকথন)। CQ মোড এনকোডারকে দীর্ঘ, সহজ দৃশ্যের সময় (বিট নষ্ট না করে) একটি যুক্তিসঙ্গত মানের স্তর বজায় রাখার অনুমতি দেয়, যখন কঠিন সিকোয়েন্সের জন্য আরও বিট বরাদ্দ করে।

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

উপরন্তু আমরা কোয়ান্টাইজার থ্রেশহোল্ড সেট করতে হবে। VP9-এ কোয়ান্টাইজার থ্রেশহোল্ড 0 থেকে 63 পর্যন্ত পরিবর্তিত হতে পারে।

নিম্নলিখিত FFmpeg কমান্ড-লাইন পরামিতিগুলি CQ মোডের জন্য ব্যবহৃত হয়:
ffmpeg
-b:v <arg> লক্ষ্য বিটরেট সেট করে (যেমন 500k)
-minrate <arg>
-maxrate <arg>
সর্বনিম্ন এবং সর্বোচ্চ বিটরেট সেট করে।
-crf <arg> সর্বোচ্চ মানের স্তর সেট করে। বৈধ মান 0 থেকে 63 , নিম্ন সংখ্যাগুলি উচ্চ মানের।
CQ বিটরেট মোড: FFmpeg উদাহরণ

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

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1000k -maxrate 4000k -crf 10  -c:a libvorbis \
  CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm

এই উদাহরণে আউটপুট ফাইলটি ডিস্কে 20.2MB ছিল -- উপরের উদাহরণগুলিতে Q মোড এনকোডের তুলনায় লক্ষণীয়ভাবে ছোট।

পরবর্তী উদাহরণের বিপরীতে আমরা বিটরেটকে আরও ঘনিষ্ঠভাবে সংজ্ঞায়িত পরিসরে সীমাবদ্ধ করেছি।

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10  -c:a libvorbis \
  CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm

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

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 1000k \
  -minrate 750k -maxrate 1400k -crf 10  -c:a libvorbis \
  CQ_1400_750_crf_10_120s_tears_of_steel_1080pp.webm

এই চূড়ান্ত উদাহরণে, আউটপুটটি আকারে উল্লেখযোগ্যভাবে হ্রাস পেয়েছে, ডিস্কে 13.2MB এ নেমে গেছে।

ভিবিআর

উচ্চ-মোশন সামগ্রীর ভিডিও-অন-ডিমান্ড ফাইল স্ট্রিম করার জন্য পরিবর্তনশীল বিটরেট মোড (ভিবিআর) সুপারিশ করা হয় (উদাহরণস্বরূপ খেলাধুলা)। এটি HTTP-ভিত্তিক ডেলিভারির জন্য উপযুক্ত।

VBR মোড চার্ট

একটি VBR মডেলে, অ্যাকশন দৃশ্যগুলি "সহজ" দৃশ্যের চেয়ে উচ্চতর বিটরেট সহ এনকোড করা যেতে পারে, যা কীফ্রেমের সাথে সামঞ্জস্যপূর্ণ।

বড় স্ট্রিমিং ডেলিভারি মডেলের জন্য, VBR সুবিধাগুলি বিতরণ এবং অবকাঠামো উভয় ক্ষেত্রেই উল্লেখযোগ্যভাবে যোগ করতে পারে। যখন একই পরিকাঠামো দ্বারা অনেকগুলি VBR স্ট্রীম বিতরণ করা হয়, তখন এটি সিস্টেম ব্যবহার করে সমস্ত দর্শকদের সুবিধা প্রদান করতে পারে।

VP9 VBR উচ্চ গতির সাথে খেলাধুলা এবং অন্যান্য সামগ্রী এনকোড করার জন্যও সুপারিশ করা হয়। এই ধরনের উচ্চ-জটিল বিষয়বস্তুর জন্য, VBR নিম্ন গতির সময় উচ্চ গুণমান অর্জন করে।

নিম্নলিখিত FFmpeg কমান্ড-লাইন পরামিতি VBR মোডের জন্য ব্যবহৃত হয়:
ffmpeg
-quality good যদি এটি উপস্থিত থাকে তবে FFmpeg পরবর্তী -speed সেটিং বিবেচনা করবে
-speed <arg> ভিডিও অন ডিমান্ডের জন্য বৈধ মান হল 0-4, যার 0 হল সর্বোচ্চ মানের এবং 4 হল সর্বনিম্ন৷ (লাইভ স্ট্রিমিংয়ের জন্য পরিসীমা 5-8 - নীচে CBR দেখুন)
VBR বিটরেট মোড: FFmpeg উদাহরণ
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 0  -c:a libvorbis \
  VBR_good_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5  -c:a libvorbis \
  VBR_good_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 8  -c:a libvorbis \
  VBR_good_8_120s_tears_of_steel_1080pp.webm

সিবিআর

VP9 এর সাথে লাইভ স্ট্রিমিংয়ের জন্য কনস্ট্যান্ট বিটরেট মোড (CBR) সুপারিশ করা হয়।

CBR মোড চার্ট

CBR মূলত উপরের বিটরেটকে "হার্ড সিলিং" হিসেবে সেট করে। এর মানে হল যে এনকোডিং প্রক্রিয়া এমন হারে ডেটা তৈরি করতে পারে না যা নেটওয়ার্ক বহন করতে পারে না।

উদাহরণস্বরূপ, রিয়েল-টাইম কমিউনিকেশন (ভিডিও কনফারেন্সিং) স্ট্রীমগুলির জন্য এটি গুরুত্বপূর্ণ যে এনকোডিং অ্যাপ্লিকেশনটি নেটওয়ার্ককে বহন করতে পারে তার চেয়ে বেশি ডেটা দিয়ে প্লাবিত না করে। যদি এটি হয়, অডিও/ভিডিও সিঙ্ক সমস্যা বা হিমায়িত ফ্রেমগুলি ব্যবহারকারীর অভিজ্ঞতাকে উল্লেখযোগ্যভাবে প্রভাবিত করে, কমপ্রেসনের দক্ষতা কম হওয়ার চেয়েও বেশি। হার্ড সিলিং সংজ্ঞায়িত করা হয়েছে তা নিশ্চিত করার মাধ্যমে, সেই সিলিংয়ে পৌঁছানোর সাথে সাথে VP9 গুণমান হ্রাস করবে।

নিম্নলিখিত FFmpeg কমান্ড-লাইন পরামিতিগুলি CBR মোডের জন্য ব্যবহৃত হয়:
ffmpeg
-quality realtime যদি এটি উপস্থিত থাকে তবে FFmpeg পরবর্তী -speed সেটিং বিবেচনা করবে
-speed <arg> লাইভ স্ট্রিমিংয়ের জন্য বৈধ মান 5 থেকে 8, যার মধ্যে 5টি সর্বোচ্চ মানের এবং 8টি সর্বনিম্ন। (ভিডিও অন ডিমান্ডের জন্য এগুলি 0 থেকে 4। উপরে ভিবিআর দেখুন।)
-minrate <arg>
-maxrate <arg>
ন্যূনতম এবং সর্বোচ্চ বিটরেট সেট করে ** এগুলি অবশ্যই CBR মোডের জন্য একই -b:v বিটরেট মান সেট করতে হবে**।

খুব সহজ শর্তে আমরা লক্ষ্য, ন্যূনতম এবং সর্বোচ্চ বিটরেট একই মান নির্ধারণ করি এবং কোয়ান্টাইজারকে বলি যে অপারেশনগুলি সময়-সংবেদনশীল।

CBR বিটরেট মোড: FFmpeg উদাহরণ

নীচের উদাহরণগুলি 2Mbps এবং 500kbps লক্ষ্যে বিটরেট সেট করার অন্বেষণ করে:

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 0 -c:a libvorbis \
  CBR_2000_realtime_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -c:a libvorbis \
  CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 8 -c:a libvorbis \
  CBR_2000_realtime__8_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 0 -c:a libvorbis \
  CBR_500_realtime__0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -c:a libvorbis \
  CBR_500_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 8 -c:a libvorbis \
  CBR_500_realtime_8_120s_tears_of_steel_1080p.webm

ফলাফল

উপরের প্রতিটি এনকোড একটি উবুন্টু লিনাক্স সিস্টেমে নিম্নলিখিত স্পেসিফিকেশন সহ সঞ্চালিত হয়েছিল:

  • প্রসেসর: 4x Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
  • মেমরি (RAM): 8060MB (1492MB ব্যবহৃত)
  • গ্রাফিক্স: Intel HD Graphics 530 (Skylake GT2)
  • OS: উবুন্টু 16.04 LTS

সমস্ত ক্ষেত্রে সোর্স ফাইলটি ছিল এক মিনিট, বিশ সেকেন্ডের (1:20) ক্লিপ টিয়ার্স অফ স্টিল থেকে।

ফাইল এনকোড মিনিট ডিস্কে ফাইলের আকার
Q_g_1_crf_0_120s_tears_of_steel_1080p.webm 81 1.06GB
Q_crf_0_120s_tears_of_steel_1080p.webm 131 711.8MB
Q_crf_10_120s_tears_of_steel_1080p.webm 118 125.3MB
Q_crf_63_120s_tears_of_steel_1080p.webm 27 4.5MB
Q_g_1_120s_tears_of_steel_1080p.webm 51 25.9MB
Q_g_240_120s_tears_of_steel_1080p.webm 28 4.5MB
Q_g_480_120s_tears_of_steel_1080p.webm 10 4.4MB
CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm 11 20.2MB
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm 9 24.1MB
CQ_1400_750_crf_10_120s_tears_of_steel_1080p.webm 50 13.2MB
VBR_good_0_120s_tears_of_steel_1080p.webm 3 23.4MB
VBR_good_5_120s_tears_of_steel_1080p.webm 4 23.9MB
VBR_good_8_120s_tears_of_steel_1080p.webm 1 23.9MB
CBR_2000_realtime_speed_0_120s_tears_of_steel_1080p.webm 98 21MB
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm 2 24.8MB
CBR_2000_realtime_speed_8_120s_tears_of_steel_1080p.webm 1 21MB
CBR_500_realtime_speed_0_120s_tears_of_steel_1080p.webm 73 6.2MB
CBR_500_realtime_speed_5_120s_tears_of_steel_1080p.webm 1 8.5MB
CBR_500_realtime_speed_8_120s_tears_of_steel_1080p.webm 1 7.1MB

এটা লক্ষণীয় যে 5 -এর উপরে সেটিং -speed মান VP9 প্রক্রিয়াকরণের গতিকে রূপান্তরিত করে। যদিও এটি কোয়ান্টাইজেশনের যথেষ্ট বৃদ্ধি (খুব নিম্ন মানের দ্রুত বিটরেটের উপর দৃঢ়ভাবে "ডিথারড" প্রভাব দ্বারা দেখা যায়), VP9 এখনও একটি খুব ভাল কম বিটরেট 1080p আউটপুট তৈরি করতে সক্ষম, যদিও বড় ডিসপ্লের তুলনায় ছোট মোবাইল ডিভাইসের জন্য উপযুক্ত। .

রি-স্কেলিং (পুনরায় মাপকরণ) সহ ব্যবহারের ক্ষেত্রে বিবেচনা

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

এর একটি ক্লাসিক উদাহরণ একটি এইচডি স্ট্রিমকে এসডি আউটপুটে পরিবর্তন করা হবে। আবার এটি প্রক্রিয়াকরণের সময় এবং আউটপুট বিটরেটের উপর উল্লেখযোগ্য প্রভাব ফেলবে। একটি পরিস্থিতিতে যেখানে দুটি FFmpeg কমান্ড অন্যথায় অভিন্ন, শুধুমাত্র আউটপুট ভিডিওর আকার সামঞ্জস্য করা ফলাফল ফাইলের আকার এবং প্রকৃতপক্ষে একটি স্ট্রিমিং মডেলে এর বিটরেট পরিবর্তন করবে।

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

Q মোড
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9 -b:v 0 -crf 10 -quality good \
  -speed 0 -vf scale=640x480 -c:a libvorbis 640x480_Q_crf_10_120s_tears_of_steel_1080p.webm
CQ মোড
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -crf 10 -vf scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
ভিবিআর মোড
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
সিবিআর মোড
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -vf  scale=640x480 \
  -c:a libvorbis 640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

রিস্কেলিংয়ের জন্য ফলাফলের সারণী

ফাইল এনকোড মিনিট ডিস্কে ফাইলের আকার
640x480_Q_crf_10_120s_tears_of_steel_1080p.webm 5 3.4MB
640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm 2 22.4MB
640x480_VBR_good_5_120s_tears_of_steel_1080p.webm 1 22.6MB
640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm 4 23MB

তুলনা করার সুবিধার জন্য এইগুলি আমাদের আগের উদাহরণ থেকে একই FFmpeg কমান্ডগুলি কিন্তু স্কেলিং ছাড়াই :

ফাইল এনকোড মিনিট ডিস্কে ফাইলের আকার
Q_crf_10_120s_tears_of_steel_1080p.webm 56 126MB
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm 9 24.1MB
VBR_good_5_120s_tears_of_steel_1080p.webm 4 23.9MB
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm 1 24.8MB

যেমন আপনি দেখতে পাবেন, প্রতিটির জন্য আউটপুট ফাইলের আকারে একটি উল্লেখযোগ্য হ্রাস রয়েছে এবং বেশিরভাগ উদাহরণে এনকোডের সময় হ্রাস পাওয়া গেলে, Q মোডে এনকোডের সময় আসলে বেড়েছে। একটি ভিডিও "আরো" কম্প্রেস করার জন্য আরও বেশি পরিশ্রমের প্রয়োজন হয়, তাই আউটপুট ফাইলটি ছোট হওয়ার আশা করা হলেও যদি গুণমান সীমাবদ্ধ না হয় (যেমন এটি Q মোডে), এটি আসলে আউটপুট ফাইল তৈরি করতে সময় বাড়াতে পারে। অনুমান করবেন না যে একটি ছোট ফাইল সবসময় এনকোডিং প্রক্রিয়া দ্বারা দ্রুত বিতরণ করা যেতে পারে।

সংমিশ্রণে বিটরেট পুনরায় স্কেলিং এবং হ্রাস করা

চূড়ান্ত তুলনা হিসাবে নিম্নলিখিত উদাহরণগুলি পুনরায় স্কেলিং-এর CQ, VBR এবং CBR উদাহরণগুলিকে পুনরায় চালায়, কিন্তু এবার আমরা লক্ষ্য বিটরেটকে 500kbps-এর স্তরে সীমাবদ্ধ রাখি -- মোটামুটি এক চতুর্থাংশ (ছবির আকারের স্কেলিং কম করার সাথে সামঞ্জস্য রেখে) .

CQ মোড
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 550k -crf 10 -vf  scale=640x480 -c:a libvorbis \
  640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
ভিবিআর মোড
ffmpeg -i "120s_tears_of_steel_1080p.webm" -c:v vp9  -b:v 500k \
  -minrate 350k -maxrate 500k -quality good -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
সিবিআর মোড
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -vf scale=640x480 -c:a libvorbis \
  640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm

টার্গেট বিটরেট রিস্কেল এবং কমানোর জন্য ফলাফলের সারণী

ফাইল এনকোড মিনিট ডিস্কে ফাইলের আকার
640x480_CQ_500_crf_0_120s_tears_of_steel_1080p.webm 1 7MB
640x480_VBR_500_good_5_120s_tears_of_steel_1080p.webm 1 7MB
640x480_CBR_500_realtime_5_120s_tears_of_steel_1080p.webm 1 7.6MB

আপনি দেখতে পাচ্ছেন, এনকোড সময় আরও সংক্ষিপ্ত করা হয়েছে।