FFmpeg 2 Pass Encoding


2

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

ffmpeg -i input.mkv -c:v libx264 -vf "scale=1920x1080" -vb 3.5M -pass 1 -an pass1.mp4
ffmpeg -i input.mkv -c:v libx264 -vf "scale=1920x1080" -vb 3.5M -pass 2 -c:a copy pass2.mp4

และใช้งานได้ดี และฉันรู้ว่าคำสั่งนี้จะให้ผลลัพธ์สำหรับการส่งผ่านครั้งแรกด้วย ไม่เป็นไร. ฉันจะลบพวกเขา ข้อสงสัยของฉันคือฉันอ่านฟอรัมมากมายที่ผู้คนใช้ -y และ -passlogfile คำสั่งในการเข้ารหัส 2 รอบ อะไรนะ -y และ -passlogfile ทำ?

ฉันสามารถเพิ่มการตั้งค่าอื่น ๆ เพื่อปรับปรุงคุณภาพได้หรือไม่

คำตอบ:


3

ฉันเรียนรู้ว่าการเข้ารหัส 2 Pass จะทำงานได้ดีขึ้น

สองรอบจะดีกว่า กำหนดเป้าหมายขนาดไฟล์เอาต์พุตเฉพาะ . มิฉะนั้นเพียงทำผ่านเดียวกับ -crf.

ฉันรู้ว่าคำสั่งนี้จะให้ผลลัพธ์สำหรับการส่งผ่านครั้งแรกด้วย ไม่เป็นไร. ฉันจะลบพวกเขา

คุณสามารถส่งออกไป /dev/null (Linux & amp; macOS) หรือ NUL (Windows) แทนและหลีกเลี่ยงการสร้างไฟล์ชั่วคราว:

ffmpeg -y -i input.mkv -c:v libx264 -vf "scale=1920x1080" -vb 3.5M -pass 1 -an -f mp4 /dev/null

อะไรนะ -y และ -passlogfile ทำ?

  • -y เขียนทับไฟล์เอาต์พุตโดยไม่ขอการยืนยัน เหมาะสมสำหรับการผ่านครั้งแรกไม่เช่นนั้นมันจะถามคุณ File '/dev/null' already exists. Overwrite ? [y/N]. ใช่คุณสามารถ "เขียนทับ" /dev/null.

  • -passlogfile ตั้งชื่อไฟล์บันทึกสองรอบ คุณไม่จำเป็นต้องใช้ตัวเลือกนี้

ดู ffmpeg เอกสาร สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกเหล่านี้

ฉันสามารถเพิ่มการตั้งค่าอื่น ๆ เพื่อปรับปรุงคุณภาพได้หรือไม่

  • ใช้การตั้งค่าล่วงหน้าที่ช้าที่สุดที่คุณมีความอดทน ดู FFmpeg Wiki: H.264 .
  • เพิ่มบิตเรต
  • ใช้โปรแกรมเปลี่ยนไฟล์ที่มีประสิทธิภาพมากขึ้นเช่น libx265 ดู FFmpeg Wiki: H.265 . ระวังว่ามันช้า
  • หลีกเลี่ยงการลดอัตราการสุ่ม ทดลองกับสิ่งต่าง ๆ ขั้นตอนวิธีการปรับขนาด เพื่อดูสิ่งที่ดูดีที่สุดสำหรับคุณ: "scale=1920:-2:flags=lanczos".
  • ซื้อไดรฟ์อื่นและไม่เข้ารหัสใหม่

1. "ใช้การตั้งค่าล่วงหน้าที่ช้าที่สุดที่คุณมีความอดทน" - จากเอกสาร FFmpeg ฉันคิดว่าค่าที่ตั้งล่วงหน้าเหล่านั้นมีประโยชน์สำหรับการเข้ารหัส crf เท่านั้น ดังนั้นค่าที่ตั้งล่วงหน้าที่ช้ากว่าก็จะปรับปรุง 2 รอบ ขวา? 2. "scale = 1920: -2: flags = lanczos" - ฉันจะลองใช้อัลกอริทึมการปรับขนาดที่แตกต่างกันอย่างแน่นอน และที่ความสูง -2 ในที่นี้ทำอะไรได้บ้าง เหมือนกับ -1 หรือไม่?
RvidD

1
@RvidD การตั้งค่าล่วงหน้าที่ช้าลงจะใช้ชุดตัวเลือกที่มีประสิทธิภาพมากขึ้นซึ่งหมายความว่าการเข้ารหัสจะช้าลง แต่โดยทั่วไปคุณจะมีอัตราส่วนคุณภาพต่อบิตที่ดีกว่า คุณสามารถใช้มันกับวิธีการควบคุมอัตราใด ๆ -2 ก็เหมือน -1แต่จะทำให้ค่าหารด้วย 2 ซึ่งจำเป็นสำหรับการแสดงผล H.264 / H.265 ด้วยการสุ่มสีย่อย 4: 2: 0
llogan

ฉันสามารถใช้งาน FFmpeg GPU ได้หรือไม่ GPU ของฉันคือ Geforce GTX 970m นี่เป็นความคิดที่ดีที่จะใช้ FFmpeg ด้วยความช่วยเหลือจาก GPU หรือไม่?
RvidD

1
@RvidD ใช่เห็น trac.ffmpeg.org/wiki/HWAccelIntro - โดยเฉพาะส่วนที่เกี่ยวกับ NVENC ข้อมูลเพิ่มเติมบางอย่างที่นี่: superuser.com/q/1296374/48078 . สิ่งนี้จะปรับปรุงความเร็วการเข้ารหัส แต่ฉันไม่รู้ว่า NVENC สำหรับ H.264 ให้คุณภาพที่ดีขึ้นสำหรับบิตเรตเดียวกันหรือไม่เปรียบเทียบกับ libx264
slhck

@ LordNeckbeard ฉันเข้ารหัสวิดีโอ 2 รอบด้วย slowpreset, placebo และไม่มีการตั้งค่าล่วงหน้า ผลลัพธ์ที่ได้แตกต่างกัน slowpreset ดำเนินการแย่กว่าเล็กน้อยเล็กน้อยไม่มีการตั้งค่าล่วงหน้า และยาหลอกมีประสิทธิภาพแย่กว่ายาที่ตั้งไว้ล่วงหน้าเล็กน้อย ฉันทดสอบด้วยวิดีโอต่าง ๆ และบิตเรตต่างกัน ฉันใช้ภาพหน้าจอหลายภาพแล้วเปรียบเทียบกับมันและผลลัพธ์ก็เหมือนกัน อาจเป็นเพราะการส่งรหัสที่สองของการเข้ารหัสมีพารามิเตอร์ที่กำหนดไว้ล่วงหน้าและอาจไม่จำเป็นต้องมีการตั้งค่าล่วงหน้าใด ๆ ฉันใช้ FFmpeg เวอร์ชันล่าสุด (Windows 64 บิต, คงที่, คอมไพล์ยามค่ำคืน)
RvidD
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.