อัตราบิตผันแปรพร้อมการตั้งค่า“ -vb” และ“ minrate” /“ maxrate” ใน FFmpeg


12

สำหรับการเรนเดอร์เวลาที่ใช้จะแตกต่างกันมาก

  • -b 3500K -minrate 0K -maxrate 8000K ใช้เวลา 1 ชม. 17 นาที
  • vb=3000k ใช้เวลา 2.5 ชั่วโมง

คืออะไรvb 3000kและวิธีการที่แตกต่างจาก-b 3500K -minrate 0K -maxrate 8000K? การตั้งค่าอัตราบิตตัวแปรเหล่านี้หรือไม่

ถ้าฉันเปลี่ยน-b 3500K -minrate 3500K -maxrate 3500Kเป็นอัตราบิตคงที่หรือไม่

คำตอบ:


16

โปรดอ่านเอกสารประกอบสำหรับ FFmpeg และเรียกใช้ffmpeg -h fullสำหรับรายการตัวเลือก นอกจากนี้ให้ดูที่บทความที่ฉันเขียนซึ่งแสดงความแตกต่างระหว่างโหมดการควบคุมอัตราในตัวเข้ารหัสเช่น x264 และ x265

โดยทั่วไปนี่คือความหมายของตัวเลือก:

  • -b:v(หรือ-vbเหมือนกัน) ระบุอัตราบิตเป้าหมายเฉลี่ยสำหรับโปรแกรมเข้ารหัสที่จะใช้:

    -b <int> E..VA. ตั้งค่าบิตเรต (เป็นบิต / s) (จาก 0 ถึง INT_MAX)

  • -minrate ระบุความอดทนขั้นต่ำที่จะใช้:

    -minrate <int> E..VA. ตั้งค่าความอดทนบิตเรตขั้นต่ำ (เป็นบิต / วินาที) มีประโยชน์มากที่สุดในการตั้งค่าการเข้ารหัส CBR มันเป็นของใช้เล็ก ๆ น้อย ๆ (จาก INT_MIN ถึง INT_MAX)

  • -maxrateระบุความอดทนสูงสุด อย่างไรก็ตามตามเอกสารระบุว่าสิ่งนี้ถูกใช้ร่วมกับbufsize:

    -maxrate <int> E..VA. ตั้งค่าความอดทนบิตเรตสูงสุด (เป็นบิต / วินาที) bufsizeจะต้องมีการตั้งค่า (จาก INT_MIN ถึง INT_MAX)

    -bufsize <int> E..VA. ตั้งค่าขนาดบัฟเฟอร์ของ Ratecontrol (เป็นบิต) (จาก INT_MIN ถึง INT_MAX)

    สิ่งนี้เหมาะสมสำหรับการเข้ารหัสอัตราบิตผันแปรซึ่งแทนที่จะใช้อัตราบิตคงที่หรือรุ่นคุณภาพคงที่ตัวเข้ารหัสจะจำลองการส่งสัญญาณด้วยบัฟเฟอร์เสมือนที่ตัวถอดรหัส กระบวนการ-minrate/ -maxrate/ -bufsizeตัวเลือกควบคุมขนาดบัฟเฟอร์ที่ โดยทั่วไปคุณจะใช้โหมดนี้สำหรับการสตรีมเท่านั้นเนื่องจากเทคนิคจะ จำกัด อัตราบิตเพื่อไม่ให้เกินค่าที่แน่นอนซึ่งจะทำให้บัฟเฟอร์ถอดรหัสถอดรหัสเกินหรือต่ำกว่า

ในการสรุปคุณมีหลายทางเลือกสำหรับการ จำกัด อัตราบิต:

  1. ในการตั้งค่ากระบวนการ CBR คุณต้องตรวจสอบสิ่งที่ตัวเข้ารหัสเสนอ โดยทั่วไปคุณจะไม่สามารถรับบิตเรตที่สมบูรณ์แบบได้เนื่องจากตัวเข้ารหัสจะไม่เสียบิต การตั้งค่า-b:v, -minrateและ-maxrateให้อยู่ในระดับเดียวกันจะประสบความสำเร็จที่ตัวอย่างสำหรับ libx264:

    ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
    

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

  2. ตั้งค่ากระบวนการอัตราบิตข้อ จำกัด / ตัวแปรสำหรับการสตรีม ใช้-b:v 3500K -maxrate 3500K -bufsize 1000Kตัวอย่างเช่น คุณจะต้องปรับอัตราและขนาดบัฟเฟอร์ให้เหมาะสมกับบริบทอย่างชัดเจน ยิ่งขนาดบัฟเฟอร์สูงขึ้นเท่าใดความผันแปรบิตเรตที่อนุญาตก็จะสูงขึ้น

  3. ใช้เป้าหมายคุณภาพคงที่และ จำกัด บิตเรตเท่านั้นเพื่อจับเดือย ตัวอย่างเช่นใช้-c:v libx264 -crf 23 -maxrate 4M -bufsize 4Mเพื่อเข้ารหัสที่บิตเรตตัวแปรที่มีเป้าหมาย CRF เป็น 23 แต่ จำกัด เอาต์พุตที่สูงสุด 4 MBit / s


1
มันจะเข้ารหัสโดยใช้อัตราบิตผันแปรได้อย่างไร? ในไวยากรณ์ที่จะใช้?
Scott Downey

คุณต้องการใช้โปรแกรมเปลี่ยนรหัสใด
slhck

ffmpeg ฉันเชื่อว่าใช้ใน kdenlive
Scott Downey

ไม่ฉันหมายถึงใน: x264 สำหรับวิดีโอ H.264 / MPEG-4 AVC หรือ XviD สำหรับ MPEG-4 หรือ Ogg Theora เป็นต้นเพียงแค่ใส่ไฟล์ที่คุณต้องการ? MP4?
slhck

3
ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเข้ารหัสด้วย x264 ใน FFmpeg โดยเฉพาะอย่างยิ่งดูที่สถานี (โดยทั่วไปฉันใช้สถานีที่เร็วมากในการทดสอบของฉัน dropoff ที่ใหญ่ที่สุดในไฟล์คือระหว่างซุปเปอร์ฟาสต์กับฟาสต์ - หลังจากนั้นความแตกต่างนั้นเพิ่มขึ้นมากแน่นอน YMMV)
evilsoup
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.