วิธีพิจารณาบิตเรต, -maxrate และ -bufsize วิดีโอสำหรับเว็บ


13

ฉันกำลังใช้ ffmpeg เพื่อเข้ารหัสวิดีโอของฉันเพื่ออัพโหลดบนเว็บ ฉันเห็นโพสต์นี้เกี่ยวกับการใช้ ffmpeg แต่ก็ไม่ได้เป็นวิธีพิจารณาค่า

สมมติว่าฉันมีวิดีโอขนาด 70 MB ด้วยระยะเวลา 4 นาที ฉันจะพิจารณาค่าสำหรับธงเหล่านี้: -b:v, -maxrateและ-bufsizeสำหรับคำสั่งนี้?

ffmpeg -i input -codec:v libx264 -profile:v main -preset slow -b:v ? -maxrate ? -bufsize ? -vf "scale=720:trunc(ow/a/2)*2" -threads 0 -codec:a libfdk_aac -movflags +faststart output

หรือมีค่าปกติเช่นเดียวกับcrfค่าที่ 19-24? ฉันขอขอบคุณสำหรับความช่วยเหลือและคำแนะนำของคุณ


การเข้ารหัสวิดีโอเป็นศิลปะและมีหลายร้อยพารามิเตอร์ที่จะโท โปรดสังเกตว่าการเข้ารหัสสองรอบจะให้คุณภาพและการบีบอัดที่ดีขึ้น (มาก) ในสถานการณ์ส่วนใหญ่กว่าการเล่นด้วยบิตเรต โดยปกติแล้วขนาดบิตสุดท้ายและบิตเรตวิดีโอขึ้นอยู่กับขนาดเอาต์พุตวิดีโอเป็นหลัก ffmpeg นั้นฉลาดพอที่จะเลือก maxrate และ bitrate ถ้าคุณบอกให้มันคงคุณภาพของวิดีโอที่เหมือนกัน โปรดสังเกตว่าการสร้างวิดีโอความกว้าง 480px นั้นดีพอในสถานการณ์ส่วนใหญ่และนั่นจะช่วยประหยัดแบนด์วิดท์ที่เล่นด้วยบิตเรตมากขึ้น
earizon

1
@earizon ฉันเห็นด้วยการเข้ารหัสวิดีโอเป็นศิลปะและ 480 มักจะดีพอ อย่างไรก็ตามฉันชอบที่จะมีความละเอียดสูงกว่าเพราะฉันไม่ได้ใช้ CRT ที่ 640x480 อีกต่อไป มันเป็นวิธีที่ดีกว่าในการลดขนาดกว่าเล่นซอกับบิตเรต แต่อีกครั้งฉันชอบตัวเลือก
Wyatt8740

คำตอบ:


21

ขึ้นอยู่กับความเร็วในการอัพโหลดของคุณ

bufsizeจะกำหนดว่าศาสนา ffmpeg เกี่ยวกับการรักษาอัตราบิตคงที่ของคุณ หากคุณตั้งค่าเป็นbufsize64k ตามFFmpeg Wiki: การ จำกัด บิตเรตเอาท์พุทจะคำนวณบิตเรตปัจจุบันของมันทุก 64 กิโลไบต์และปรับตามนั้น ขนาดที่เล็กลงbufsizeอาจเป็นอันตรายต่อคุณภาพในกรณีที่ไม่อนุญาตให้มีช่องว่างระหว่างเช็คเพียงพอสำหรับ x264 เพื่อทำการเปลี่ยนแปลงอย่างฉับพลัน - คุณจะได้รับการปิดกั้น

หากคุณmaxrateคือ 640kbps และของคุณbufsizeคือ 64k ดังนั้นทุกสิบของวินาที x264 จะตรวจสอบ นี่เป็นสิ่งที่ดีที่สุดย่อย - FFmpeg Wiki: การเข้ารหัสเว็บไซต์สตรีมมิ่งแนะนำให้รันทุกๆ 1 ถึง 2 วินาที หากสิ่งนี้ไม่สมเหตุสมผลให้คิดว่าเป็นmaxrate/ bufsize= ความถี่ของการตรวจสอบ รักษาความถี่นี้ไว้ระหว่าง 1 ถึง 2 วินาทีตามกฎทั่วไป

หากคุณตั้งค่าทั้งสองmaxrateและbufsizeคุณควร:

  • กำหนดmaxrateเป็นความเร็วในการอัพโหลดที่ต่ำที่สุดของคุณ (ในตัวอย่าง ffmpeg wikiนี่คือ 80% ของความเร็วในการอัพโหลดทั้งหมด แต่ระยะทางของคุณอาจแตกต่างกัน)
  • ตั้งค่าbufsizeให้อยู่ระหว่างเดียวกับของคุณmaxrate(หนึ่งวินาที) และสองเท่าของmaxrate(2 วินาที) หากสิ่งนี้ยังคงไม่เพียงพอให้ลดระดับของคุณลงmaxrateแล้วตั้งค่าใหม่bufsizeตามลำดับ

จากนั้นคุณจะต้องเล่นรอบ ๆ เล็กน้อย แต่เนื่องจากคุณต้องเริ่มต้นที่ไหนสักแห่งฉันจะเริ่มต้นที่maxrateประมาณ 600k ซึ่งโดยปกติแล้วฉันจะพอใจพอสำหรับฉันก่อนที่ฉันจะใช้crfทุกอย่าง

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

ไม่มีค่าปกติจริง ๆ แล้วอะไรcrfคือการเพิ่มประสิทธิภาพเอาต์พุตตามสิ่งที่คิดว่าเป็นขนาดบัฟเฟอร์ที่ดีที่สุดสำหรับการรักษาอัตราที่ตั้งไว้ มันพยายามรักษาขนาดไฟล์ให้ต่ำในขณะที่ยังคงรักษาคุณภาพไว้


1
ไม่ควร "ตั้งค่า bufsize ให้อยู่ระหว่างเดียวกับ maxrate ของคุณ (หนึ่งวินาที) และครึ่งหนึ่งของ maxrate ของคุณ (2 วินาที)" เป็น "ตั้งค่า bufsize เป็นที่ใดที่หนึ่งระหว่าง maxrate ของคุณ (หนึ่งวินาที) และสอง maxrate ของคุณ (2 วินาที) "?
Ely

@ ฉันคิดว่าคุณถูก ฉันจะทำทุกครึ่งวินาที ฉันจะแก้ไขมัน!
Wyatt8740

@ Wyatt8740 ขออภัยฉันยุ่งมาก แค่คำถามเดียว หากฉันใช้crfแล้วผมไม่จำเป็นต้องระบุbitrate, buffsizeและmaxrate? และถ้าเป็นเช่นนั้นซึ่งมีประสิทธิภาพมากขึ้น (การใช้งานcrfหรือbitrate, buffsizeและmaxrate)?
Robin

@Robin คุณสามารถใช้ bufsize และ maxrate กับ crf โปรดจำไว้ว่า crf จะปรับบิตเรตได้ทันทีเพื่อให้ตรงกับคุณภาพบางอย่างและหากบางส่วนของวิดีโอมีความซับซ้อนมากบิตเรตจะถ่ายภาพบนท้องฟ้าและคุณอาจไม่ต้องการสิ่งนั้นดังนั้นจึงควร "วางกุญแจ" ด้วย bufsize และ maxrate (แต่ไม่เข้มงวดเกินไปมิฉะนั้นวิดีโอของคุณจะดูเหมือนอึ! :))
Ely

@Robin ถูกต้องคุณไม่จำเป็นต้องใช้ CRF ร่วมกับผู้อื่น อย่างไรก็ตามคุณสามารถทำได้หากต้องการ จำกัด CRF พยายามที่จะรักษาคุณภาพอย่างต่อเนื่อง - คุณสามารถบังคับให้ทำเช่นนั้นภายในขอบเขตด้วยและbufsize maxrateคุณไม่จำเป็นต้องbitrateแม้ว่า ดังที่ Ely กล่าวว่าจะทำให้ดีขึ้นสำหรับการสตรีม
Wyatt8740
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.