พารามิเตอร์การบีบอัดวิดีโอ H.264 / H.265 ใดที่ให้คุณภาพเทียบเท่า DVD ด้วยการบีบอัดที่ดีกว่า


11

ฉันมีกล่องดีวีดีวิดีโอที่ฉันต้องการกำจัดในขณะที่ฉันต้องการเก็บวิดีโอด้วยการแปลงเป็นไฟล์ MP4 เพื่อเก็บไว้ในฮาร์ดไดรฟ์

พิจารณาความเหนือกว่าของอัลกอริทึมการบีบอัด H.264 AVC และ H.265 HEVC ที่ทันสมัยเหนือ MPEG2 มาตรฐาน DVD ฉันหวังว่าจะประหยัดพื้นที่ฮาร์ดไดรฟ์ด้วยการบีบอัดวิดีโอในขณะที่ประหยัดคุณภาพดั้งเดิมของดีวีดีได้ถึง 99%

อะไร

  • พารามิเตอร์การบีบอัด H.264 (FFMPEG + libx264)
  • พารามิเตอร์การบีบอัด H.265 (FFMPEG + libx265)

ฉันควรใช้เพื่อบรรลุเป้าหมายหรือไม่

โดยพารามิเตอร์ฉันหมายถึงค่า CBR / CRF ที่ตั้งไว้ล่วงหน้า (ไม่มากโปรดช้า / placebo โปรด), ธง ฯลฯ

PS: ฉันต้องการที่จะ จำกัด กรณีที่มีการใช้-pix_fmt yuv420pและ-profile:v baseline -level 3.0เพื่อให้แน่ใจว่าไฟล์ที่เล่นตกลงบนอุปกรณ์ทั้งหมดรวมถึงอุปกรณ์เก่าที่อาศัยชิปถอดรหัสฮาร์ดแวร์เก่า การใช้ความถี่ I-frames เพิ่มขึ้นบ้าง (การใช้-gพารามิเตอร์) ก็เป็นสิ่งที่ต้องการเพื่ออำนวยความสะดวกในการใช้งานสื่อความเร็วต่ำและความล่าช้าสูง

สำหรับ HEVC ฉันก็ชอบที่จะใช้พารามิเตอร์ที่จะช่วยให้แน่ใจว่าการเล่นด้วยฮาร์ดแวร์เร่งความเร็วได้อย่างราบรื่นบนอุปกรณ์ที่รองรับ แต่ฉันไม่ได้ตั้งใจที่จะมุ่งเน้นข้อ จำกัด นี้เพราะฉันไม่ได้เห็นอุปกรณ์ใด ๆ ที่เสนอฮาร์ดแวร์เร่ง H.265 ถอดรหัสเลย

คำตอบ:


14

โปรดทราบว่าสำหรับเรื่องนี้คุณควรใช้รุ่นล่าสุด ffmpegและควรรวบรวมมันด้วยตัวคุณเอง สิ่งนี้ให้คุณเข้าถึง libx265 และ libfdk-aac ล่าสุดสำหรับการเข้ารหัสเสียง

นอกจากนี้การประหยัดอัตราข้อมูลจะค่อนข้างรุนแรงหากคุณไปจาก DVD ขนาด ~ 10 MBit / s ไปที่ประมาณ 1-2–2 MBit / s สำหรับวิดีโอ H.264 และ 0.5–1 MBit / s สำหรับวิดีโอ H.265 การเปลี่ยนแปลงคุณภาพในขั้นตอนด้านล่างอาจมีผลต่อบิตเรต แต่ยังคงลดลงข้อมูลที่สำคัญ

H.264

สำหรับการควบคุมคุณภาพ / อัตราคุณต้องการใช้โหมด CRFใน libx264 แทนอัตราบิตคงที่ การใช้ CRF ทำให้มั่นใจได้ว่าจะได้รับการรักษาคุณภาพโดยเฉลี่ยโดยไม่ขึ้นกับความละเอียดของวิดีโอดั้งเดิมหรือความซับซ้อน อัตราบิตคงที่มีประโยชน์จริง ๆ ถ้าคุณถูก จำกัด โดยสื่อการส่งข้อมูล (เช่นความเร็วของฮาร์ดไดรฟ์, ทรูพุตของอินเทอร์เน็ต)

การเลือกค่า CRF เป็นส่วนที่ยุ่งยาก มันต้องการให้คุณดูที่เอาต์พุต ค่าเริ่มต้นสำหรับ libx264 (23) ให้ข้อเสียค่อนข้างดีระหว่างขนาดและคุณภาพ แต่เนื่องจากแหล่งต้นฉบับของคุณถูกบีบอัดอยู่แล้ว (และไม่ใช่คุณภาพที่ดีมากเมื่อเทียบกับ Blu-ray) คุณอาจต้องการเปลี่ยน CRF ให้ต่ำลงเล็กน้อยเช่น 20 ซึ่งจะเพิ่มบิตเรตที่จำเป็นประมาณหนึ่งในสาม .

เลือกค่าที่ตั้งล่วงหน้าตามระยะเวลาที่คุณต้องการรอ slowดูเหมือนว่าคุ้มค่าที่นี่

ffmpeg -i input \
-c:v libx264 -crf 20 -pix_fmt yuv420p \
-x264-params keyint=240:min-keyint=20 \
-preset:v slow -profile:v baseline -level 3.0 \
-c:a libfdk_aac -vbr 4 \
output.mp4

ตัวเข้ารหัส ffmpeg AAC ในตัวสามารถใช้งานได้หาก libfdk-aac ไม่พร้อมใช้งาน ใช้แทน-c:a aac -strict experimental -b:a 128k-c:a libfdk_aac -vbr 4

H.265

การวิจัยชี้ให้เห็นว่าการใช้ HEVC จะนำไปสู่การประหยัดบิตเรตสูงสุด 74% เมื่อเทียบกับ H.264 สิ่งนี้ขึ้นอยู่กับข้อมูลการดูแบบอัตนัยของลำดับ Ultra-HD แน่นอนขึ้นอยู่กับความซับซ้อนชั่วคราวของเนื้อหาต้นฉบับและจำนวนข้อมูลที่บันทึกไว้จะไม่สูงสำหรับลำดับของรหัสยาก ทั้งสองวิธีคุณสามารถพูดได้อย่างปลอดภัยว่าการลดข้อมูล 50% นั้นเป็นไปได้อย่างแน่นอน

CRF เริ่มต้นสำหรับ libx265 คือ 28 การใช้เนื้อหาต้นฉบับเดียวกันจะส่งผลให้บิตเรตครึ่งหนึ่งเมื่อเทียบกับ libx264 ที่ CRF 23 ซึ่งจะไม่คำนึงถึงบิตเรตที่แท้จริงเช่นหากเวอร์ชัน H.264 ใช้ 1.5 MBit / s ดังนั้น H.265 จะใช้ประมาณ 750 kBit / s แต่จะเป็น 750 kBit / s กับ 350 kBit / s สำหรับลำดับอื่น ฉันวิ่งไปตามลำดับสองเท่าที่ความละเอียด DVD-PAL และไม่สามารถบอกความแตกต่างในด้านคุณภาพได้

ffmpeg -i input \
-c:v libx265 -pix_fmt yuv420p \
-x265-params crf=28:keyint=240:min-keyint=20 \
-preset:v slow \
-c:a libfdk_aac -vbr 4 \
output.mp4

สำหรับข้อมูลเพิ่มเติมนี่คือแหล่งข้อมูลที่เกี่ยวข้อง:


ขอบคุณสำหรับคำตอบที่ดี Keyint มีความหมายในทางปฏิบัติอย่างไร
อีวาน

1
keyintใน x264 / x265 คือช่วงระหว่าง IDR เฟรมคือช่วงเวลาระหว่างคีย์เฟรมที่ถอดรหัสสามารถรีเฟรช ในระหว่างนั้นอาจมีเฟรมที่ไม่ใช่คีย์เฟรมเช่นเมื่อมีการตัดฉาก มันเทียบเท่ากับ-gพารามิเตอร์ถ้าฉันไม่ผิด
slhck

BTW, @slhck สิ่งที่ทำให้ฉันประหลาดใจในคำตอบของคุณ - ความสนใจที่คุณให้กับการเลือกไลบรารีการเข้ารหัส AAC ฉันเคยคิดว่าพวกเขาเกือบจะเหมือนกันและให้ความแตกต่างเพียงเล็กน้อยหรือไม่มีเลยสิ่งต่าง ๆ นั้นง่ายในส่วนของเสียง (เพียงแค่เลือกบิตเรตและไปและตัวแปลงสัญญาณที่สูญเสียที่สำคัญทั้งหมดเช่น MP3, AAC และ Vorbis เช่นเดียวกันที่ 128 kbps ขึ้นไป) คุณหมายถึงว่ามีความแตกต่างที่น่าทึ่งระหว่าง libfdk-aac และ aac ทั่วไปหรือไม่?
อีวาน

1
@Ivan The Zeranoe บิวด์ควรอนุญาตให้คุณทำ-c:a aac -strict experimentalตามที่ระบุไว้ในคำตอบของฉัน และฉันเห็นด้วยฉันจะไม่พยายามสร้างมันบน Windows
slhck

2
@Ivan (ความคิดเห็นที่ 1): ดูffmpeg-wiki : "ขึ้นอยู่กับคุณภาพที่ผลิตจากสูงไปต่ำ: libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1สำหรับ AAC เท่านั้น: (เพราะค่อนข้างสับสนเล็กน้อยมีตัวเข้ารหัส 3 ตัว): libfdk_aac > aac > libfaacเครื่องหมาย = หมายถึงมากกว่าหรือเหมือนกัน คุณภาพ."
Golar Ramblar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.