উদ্দেশ্য

ফাইল-ভিত্তিক এনকোডিং (যেমন লাইভ নয়) সম্পাদন করার সময় এই বিভাগটি VP9 এনকোড সেটিংসের জন্য সুপারিশ প্রদান করে।

এই সুপারিশগুলি নিম্নলিখিত লক্ষ্যগুলির জন্য ডিজাইন করা হয়েছে:

  • গুণমান এবং এনকোডিং গতির মধ্যে একটি ভারসাম্য
  • যুক্তিসঙ্গত গুণমান অর্জনের জন্য সর্বনিম্ন বিট রেট
  • বিষয়বস্তুর ধরনের বিস্তৃত পরিসর মিটমাট করার জন্য সেটিংস

এই সুপারিশগুলি নেই:

  • ঠিকানা লাইভ এনকোডিং
  • নির্দিষ্ট বিষয়বস্তুর প্রকারের জন্য অপ্টিমাইজ করুন (যেমন হাই-মোশন স্পোর্টস ফুটেজ)
  • নির্দিষ্ট ডিভাইস বা নেটওয়ার্ক প্রয়োজনীয়তার জন্য সেটিংস কনফিগার করুন

একক রেজোলিউশন এনকোডিং

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

আপনি যদি একটি একক রেজোলিউশন তৈরি করেন, 640x480 হল ওয়েব এবং মোবাইল ডিভাইসের বিস্তৃত পরিসরের জন্য একটি নিরাপদ বাজি৷ নিম্নলিখিত FFmpeg কমান্ড-লাইন প্যারামিটারগুলি আপনাকে 750kbps এ একটি একক-রেজোলিউশন ফাইল তৈরি করতে দেয়।

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

মাল্টি-রেজোলিউশন এনকোডিং

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

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

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

নীচের সমস্ত সেটিংস বিভিন্ন রেজোলিউশনে পৃথক ফাইলের জন্য ব্যবহার করা যেতে পারে, একত্রে তারা অভিযোজিত স্ট্রিমিংয়ের জন্য উপযুক্ত একটি ব্যাপক সেট সরবরাহ করে। উল্লেখ্য যে 640x480 সংস্করণের দুটি সংস্করণ রয়েছে, একটি নিম্ন মানের (LQ) এবং অন্যটি মাঝারি মানের (MQ)।

বিটরেট

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

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

উপরের উদাহরণের জন্য, সর্বনিম্ন বিটরেট টার্গেট বিটরেটের 50% এবং টার্গেটের সর্বোচ্চ 145% সেট করার পরামর্শ দেওয়া হয়।

ফ্রেমের আকার/ফ্রেমের হার টার্গেট বিটরেট (VOD, kbps) ন্যূনতম বিটরেট (50%) সর্বোচ্চ বিটরেট (145%)
320x240p @ 24,25,30 150 75 218
640x360p @ 24,25,30 276 138 400
640x480p @ 24,25,30 512 (LQ), 750 (MQ) 256 (LQ) 375 (MQ) 742 (LQ) 1088 (MQ)
1280x720p @ 24,25,30 1024 512 1485
1280x720p @ 50,60 1800 900 2610
1920x1080p @ 24,25,30 1800 900 2610
1920x1080p @ 50,60 3000 1500 4350
2560x1440p @ 24,25,30 6000 3000 8700
2560x1440p @ 50,60 9000 4500 13050
3840x2160p @ 24,25,30 12000 6000 17400
3840x2160p @ 50,60 18000 9000 26100

চিত্র 2a: প্রস্তাবিত VOD বিটরেট

FFmpeg-এ, বিট রেট নিম্নলিখিত কমান্ডের সাহায্যে নিয়ন্ত্রিত হয়:

FFmpeg
-b:v <arg> বিটরেট সেট করে (যেমন 500k)
-minrate <arg>
-maxrate <arg>
সর্বনিম্ন এবং সর্বোচ্চ বিটরেট সেট করে।

উদাহরণস্বরূপ, 640x480 সামগ্রী এনকোড করার সময় আপনি কমান্ড-লাইন -b:v 750k -minrate 375 -maxrate 1088 ব্যবহার করতে পারেন।

গুণমান

CQ মোডে, আপনি সর্বোচ্চ মানের স্তরও সেট করবেন। ফাইল-ভিত্তিক VP9 এনকোডিংয়ের জন্য নিম্নলিখিত মানের স্তরগুলি সুপারিশ করা হয়:

ফ্রেমের উচ্চতা লক্ষ্য গুণমান (CQ)
240 37
360 36
480 34 (LQ) বা 33 (MQ)
720 32
1080 31
1440 24
2160 15

FFmpeg-এ, -crf কমান্ড দিয়ে গুণমান সেট করা হয়। উদাহরণস্বরূপ, 33 তে গুণমান সেট করতে আপনি -crf 33 কমান্ডটি ব্যবহার করবেন

মাল্টি-পাস এনকোডিং এবং এনকোডিং গতি

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

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

ফ্রেমের উচ্চতা গতি (প্রথম পাস) গতি (দ্বিতীয় পাস)
240 4 1
360 4 1
480 4 1
720 4 2
1080 4 2
1440 4 2
2160 4 2

উদাহরণস্বরূপ, -quality good -speed 4

কীফ্রেম ব্যবধান

কীফ্রেমের মধ্যে 240 ফ্রেম পর্যন্ত ভিডিওর অনুমতি দেওয়ার সুপারিশ করা হয় (30fps কন্টেন্টের জন্য 8 সেকেন্ড)। কীফ্রেম হল ভিডিও ফ্রেম যা স্বয়ংসম্পূর্ণ; তারা রেন্ডার করার জন্য অন্য কোন ফ্রেমের উপর নির্ভর করে না কিন্তু তারা অন্যান্য ফ্রেম ধরনের থেকে বড় হতে থাকে। ওয়েব এবং মোবাইল প্লেব্যাকের জন্য, কীফ্রেমের মধ্যে উদার ব্যবধান এনকোডারকে গুণমান সর্বাধিক করার জন্য কীফ্রেমের সর্বোত্তম স্থান নির্বাচন করতে দেয়।

FFmpeg-এ কীফ্রেমের ব্যবধান -g কমান্ডের সাহায্যে নিয়ন্ত্রিত হয়, ফ্রেমের সংখ্যা নির্দেশ করে। 240 ফ্রেমের জন্য এটি -g 240 হবে।

টাইলিং এবং থ্রেডিং সুপারিশ

টাইলিং ভিডিও ফ্রেমটিকে একাধিক কলামে বিভক্ত করে, যা গুণমানকে কিছুটা কমিয়ে দেয় কিন্তু এনকোডিং কর্মক্ষমতাকে দ্রুত করে। টাইলগুলি কমপক্ষে 256 পিক্সেল চওড়া হতে হবে, তাই কতগুলি টাইল ব্যবহার করা যেতে পারে তার একটি সীমা রয়েছে৷

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

বিভিন্ন রেজোলিউশনে টাইলিং এবং থ্রেডিংয়ের জন্য নিম্নলিখিত সেটিংস সুপারিশ করা হয়।

ফ্রেমের আকার টাইল-কলামের সংখ্যা থ্রেড সংখ্যা
320x240 1 ( -tile-columns 0 ) 2
640x360 2 ( -tile-columns 1 ) 4
640x480 2 ( -tile-columns 1 ) 4
1280x720 4 ( -tile-columns 2 ) 8
1920x1080 4 ( -tile-columns 2 ) 8
2560x1440 8 ( -tile-columns 3 ) 16
3840x2160 8 ( -tile-columns 3 ) 16

FFmpeg-এ, টাইলের সংখ্যা -tile-columns প্যারামিটার এবং -threads দ্বারা থ্রেডের সংখ্যা দ্বারা নিয়ন্ত্রিত হয়। উদাহরণস্বরূপ, একটি 640x480 এনকোড কমান্ড-লাইন -tile-columns 2 -threads 4 ব্যবহার করবে।

FFmpeg কমান্ড লাইন

উপরের সুপারিশগুলিকে একত্রিত করে, নিম্নলিখিত FFmpeg কমান্ডগুলি VP9 সামগ্রী এনকোড করতে ব্যবহার করা যেতে পারে।

লক্ষ্য করুন যে প্রথম-পাস এবং দ্বিতীয়-পাস কমান্ডগুলি একসাথে শৃঙ্খলিত। সেকেন্ড-পাস কমান্ডের -y আর্গুমেন্ট "হ্যাঁ" উত্তর দেয় যখন FFmpeg আউটপুট ভিডিও সহ প্রথম-পাস পরিসংখ্যান ফাইলটি ওভাররাইট করতে বলে।

এছাড়াও মনে রাখবেন যে 1280x720 আউটপুট পর্যন্ত টার্গেট করা এনকোডের জন্য একটি 1080p উৎস ব্যবহার করা হয়। একটি 4k উৎস বড় আউটপুট জন্য ব্যবহার করা হয়.

320x240 (24, 25 বা 30 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \
  -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \
  -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-320x240.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \
  -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \
  -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 1 -y tos-320x240.webm

640x360 (24, 25 বা 30 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
  -minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
  -quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-640x360.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
  -minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
  -quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-640x360.webm

640x480 (নিম্ন গুণমান, 24, 25 বা 30 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
  -minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
  -quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-640x360-low.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
  -minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
  -quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-640x480-low.webm

640x480 (মাঝারি গুণমান, 24, 25 বা 30 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
  -minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
  -quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-640x360-medium.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
  -minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
  -quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-640x480-medium.webm

1280x720 (24, 25 বা 30 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
  -minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
  -quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-1280x720-24-30fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
  -minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
  -quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-1280x720-24-30fps.webm

1280x720 (50 বা 60 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
  -minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
  -quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-1280x720-50-60fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
  -minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
  -quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4-y tos-1280x720-50-60fps.webm

1920x1080 (24, 25 বা 30 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
  -minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
  -quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-1920x1080-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
  -minrate 900k -maxrate 2610k -tile-columns 3 -g 240 -threads 8 \
  -quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-1920x1080-24-30fps.webm

1920x1080 (50 বা 60 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
  -minrate 1500k -maxrate 4350k -tile-columns 2 -g 240 -threads 8 \
  -quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-1920x1080-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
  -minrate 1500k -maxrate 4350k -tile-columns 3 -g 240 -threads 8 \
  -quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-1920x1080-50-60fps.webm

2560x1440 (24, 25 বা 30 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
  -minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
  -quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-2560x1440-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
  -minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
  -quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-2560x1440-24-30fps.webm

2560x1440 (50 বা 60 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
  -minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
  -quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-2560x1440-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
  -minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
  -quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-2560x1440-50-60fps.webm

3840x2160 (24, 25 বা 30 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
  -minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
  -quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-3840x2160-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
  -minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
  -quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -speed 4 -y tos-3840x2160-24-30fps.webm

3840x2160 (50 বা 60 ফ্রেম প্রতি সেকেন্ডে)

ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
  -minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
  -quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
  -pass 1 -speed 4 tos-3840x2160-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
  -minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
  -quality good -speed 4 -crf 15 -c:v libvpx-vp9 -c:a libopus \
  -pass 2 -y tos-3840x2160-50-60fps.webm