การเข้ารหัสพื้นฐาน

ข้อมูลเบื้องต้นเกี่ยวกับการบีบอัดวิดีโอ

ส่วนนี้ครอบคลุมตัวเลือกพื้นฐานสำหรับการเข้ารหัส VP9 ซึ่งรวมถึงขนาดเฟรม การควบคุมบิตเรตพื้นฐาน และคุณภาพ

หากเพิ่งเริ่มใช้การบีบอัดวิดีโอ คุณอาจต้องการดูวิดีโอนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับความจำเป็นในการบีบอัดวิดีโอและวิธีการทำงาน

การเข้ารหัสอย่างง่าย

คำสั่ง FFmpeg ต่อไปนี้จะแปลงไฟล์อินพุตเป็นวิดีโอ VP9 ที่มีเสียง Opus นี่คือการเข้ารหัสที่ง่ายที่สุดซึ่งใช้การตั้งค่าเริ่มต้น

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

ความละเอียด

วิดีโอทุกรายการมีขนาดเฟรม (ระบุความกว้างและความสูงของพิกเซล) คุณใช้พารามิเตอร์บรรทัดคำสั่ง FFmpeg ต่อไปนี้เพื่อควบคุมขนาดเฟรมวิดีโอเอาต์พุตสำหรับการเข้ารหัส VP9 ได้

FFmpeg
-vf scale=<width>x<height> ความกว้างและความสูงของเฟรม

ตัวอย่างเช่น คำสั่ง FFmpeg ต่อไปนี้จะแสดงผลวิดีโอ VP9 WebM ขนาด 640x480

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 ต่อไปนี้จะสร้างไฟล์วิดีโอขนาด 640x480 คุณภาพปานกลางโดยใช้โหมด CQ ที่มีบิตเรตเฉลี่ย 750 kbps และจำกัดคุณภาพสูงสุด ไว้ที่ 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 หลายรายการเพื่อเข้ารหัสวิดีโอได้ การตั้งค่าเหล่านี้อาจลดคุณภาพลงเล็กน้อย แต่จะช่วยเพิ่มความเร็วในการเข้ารหัสและถอดรหัสได้อย่างมาก

การตั้งค่า 2 ประเภทนี้ควบคุมโดยพารามิเตอร์บรรทัดคำสั่งหลายรายการ ดังนี้

FFmpeg
-threads ระบุจำนวนเธรดที่จะใช้ในระหว่างการเข้ารหัส
-quality อาจตั้งค่าเป็น good, best หรือ realtime
-speed พารามิเตอร์นี้มีความหมายแตกต่างกัน ขึ้นอยู่กับว่าตั้งค่าคุณภาพเป็น good หรือ realtime การตั้งค่าความเร็ว 0-4 จะมีผลกับ VOD ใน good และ best โดย 0 จะเป็นคุณภาพสูงสุดและ 4 จะเป็นคุณภาพต่ำสุด Realtime ค่าที่ใช้ได้คือ 5-8 โดยตัวเลขที่ต่ำกว่าหมายถึงคุณภาพที่สูงกว่า
-tile-columns การแบ่งวิดีโอออกเป็นส่วนๆ จะแบ่งวิดีโอออกเป็นส่วนสี่เหลี่ยม ซึ่งช่วยให้ใช้การทำงานแบบหลายเธรดในการเข้ารหัสและถอดรหัสได้ จำนวนไทล์จะเป็นเลขยกกำลังของ 2 เสมอ 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

ตัวเลือกสำหรับการตั้งค่าคุณภาพและความเร็วอาจแตกต่างกันไปตามความละเอียด และกำลังประมวลผลที่มี ดูชุดคำแนะนำทั้งหมดได้ใน ส่วนถัดไป