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