การใช้ ffmpeg เพื่อเข้ารหัสวิดีโอคุณภาพสูง [ปิด]


92

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

คำสั่งพื้นฐานคือ:

ffmpeg -r 25 -i %4d.png myvideo.mpg

และฉันได้ลองใช้แฟล็ก minrate และ maxrate แล้ว รูปแบบใด ๆ ของ {mpg, avi, mov, flv} จะทำ

ข้อเสนอแนะสำหรับการตั้งค่าหรือไม่? ขนาดไฟล์สุดท้ายไม่ใช่ปัญหา


7
บน Mac ของฉันฉันใช้คำสั่งต่อไปนี้: ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4. ฉันพบว่าในการบังคับเฟรมเรตฉันต้องระบุทั้งอินพุตและไฟล์เอาต์พุต ตัวแปลงสัญญาณนี้ดูเหมือนจะใช้ได้สำหรับฉัน - คุณอาจไม่จำเป็นต้องระบุ ฉันแค่อยากจะรวมสิ่งที่ฉันทำลงไปเพราะฉันใช้เวลาส่วนใหญ่ไปกับมัน ข้อเสียเพียงอย่างเดียวคือภาพที่ฉันป้อนมีคอนทราสต์สูง (ลูกบอลสีน้ำเงินและสีแดงกับพื้นหลังสีขาว) และหลังจากนั้นในภาพยนตร์ลูกบอลทั้งหมดจะกลายเป็นสีเข้มเหมือนกันซึ่งเป็นเอฟเฟกต์คอนทราสต์ที่ไม่ต้องการ
jvriesem

ขอบคุณ @jvriesem! สิ่งนี้ได้ผลดีสำหรับฉัน
Dan Loewenherz

ฉันขอแนะนำให้ถามคำถามนี้ในStackOverflow สำหรับระบบมัลติมีเดีย
Hamed

c ++ รุ่นstackoverflow.com/a/43464269/6180077ไปที่ลิงค์นี้เพื่อใช้งานแอปพลิเคชั่นบันทึกหน้าจอรูปแบบ FFMPEG c ++ mp4
Abdullah Farweez

ตรวจสอบลิงก์นี้ซึ่งสาธิตการเขียนไฟล์วิดีโอโดยใช้ FFMPEG libs ทางโปรแกรม: stackoverflow.com/a/43464269/6180077
Abdullah Farweez

คำตอบ:


64

สองสิ่ง:

  • คุณต้องตั้งค่าบิตเรตของวิดีโอ ฉันไม่เคยใช้ minrate และ maxrate เลยไม่รู้ว่ามันทำงานอย่างไร แต่ด้วยการตั้งค่าบิตเรตโดยใช้-bสวิตช์ฉันจะได้วิดีโอคุณภาพสูง คุณต้องสร้างบิตเรตที่ให้การแลกเปลี่ยนที่ดีระหว่างการบีบอัดและคุณภาพของวิดีโอ คุณอาจต้องทดลองกับสิ่งนี้เพราะทุกอย่างขึ้นอยู่กับขนาดเฟรมอัตราเฟรมและปริมาณการเคลื่อนไหวในเนื้อหาวิดีโอของคุณ โปรดทราบว่า DVD มีแนวโน้มที่จะอยู่ที่ประมาณ 4-5 Mbit / s โดยเฉลี่ยสำหรับ 720x480 ดังนั้นฉันมักจะเริ่มจากตรงนั้นและตัดสินใจว่าต้องการมากหรือน้อยจากนั้นจึงทดลอง ตัวอย่างเช่นคุณสามารถเพิ่ม-b 5000kในบรรทัดคำสั่งเพื่อรับบิตเรตของวิดีโอดีวีดีมากขึ้นหรือน้อยลง

  • คุณต้องระบุตัวแปลงสัญญาณวิดีโอ หากไม่เป็นเช่นนั้น ffmpeg จะตั้งค่าเริ่มต้นเป็น MPEG-1 ซึ่งค่อนข้างเก่าและไม่ได้ให้ปริมาณการบีบอัดใกล้เคียงกับ MPEG-4 หรือ H.264 หากเวอร์ชัน ffmpeg ของคุณสร้างขึ้นด้วยการรองรับ libx264 คุณสามารถระบุ-vcodec libx264เป็นส่วนหนึ่งของบรรทัดคำสั่งได้ มิฉะนั้น-vcodec mpeg4จะทำงานได้ดีกว่า MPEG-1 แต่ไม่เท่ากับ x264

  • มีตัวเลือกขั้นสูงอื่น ๆ อีกมากมายที่จะช่วยให้คุณบีบคุณภาพที่ดีที่สุดออกมาในอัตราบิตต่ำสุด ลองดูที่นี่สำหรับตัวอย่างบางส่วน


6
บิตเรตคงที่ไม่ดีต่อคุณภาพ การใช้ปัจจัยอัตราคงที่ดีกว่า (เป็นหนึ่งในโหมดการทำงาน x264) ตัวอย่างเช่น: ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …. 18 เป็น CRF ที่มีการสูญเสียคุณภาพเล็กน้อย แต่บิตเรตอาจต่ำ และคุณสามารถลองใช้ค่า CRF ที่ใหญ่ขึ้นได้หากคุณต้องการขนาดไฟล์ที่เล็กลง อย่างที่คุณเห็นมันค่อนข้างเรียบง่าย
ชื่อที่แสดง

โปรดทราบว่า -b ต้องอยู่ก่อนวิดีโอ แต่หลังจากอินพุต -i
mateuszb

47

คุณต้องระบุตัวเลือก -vb เพื่อเพิ่มบิตเรตของวิดีโอมิฉะนั้นคุณจะได้รับค่าเริ่มต้นซึ่งสร้างวิดีโอขนาดเล็ก แต่มีสิ่งประดิษฐ์มากกว่า

ลองทำสิ่งนี้:

ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg


1
นี่เป็นงานที่ดีสำหรับฉันขอบคุณ;)
thiago.adriano26

16

ตรวจสอบให้แน่ใจว่า PNG มีความทึบทั้งหมดก่อนสร้างวิดีโอ

เช่นด้วย imagemagick ให้พื้นหลังเป็นสีดำ:

convert 0.png -background black -flatten +matte 0_opaque.png

จากการทดสอบของฉันไม่มีบิตเรตหรือตัวแปลงสัญญาณเพียงพอที่จะทำให้วิดีโอดูดีหากคุณป้อน ffmpeg PNG ด้วยความโปร่งใส


สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้
Matěj Kripner

คำใบ้นี้แก้ไขคุณภาพวิดีโอที่ต่ำจนน่ารำคาญ ขอบคุณมาก.
dasmy

0

วิดีโอจะไม่มีทางดีไปกว่าเฟรมต้นฉบับ เช่นเดียวกับหนังสือพลิกหากคุณมี "การกระโดด" ระหว่างคีย์เฟรมจำนวนมากมันจะดูตลก โดยทั่วไปคุณต้องมี "tweens" ที่เพียงพอระหว่างคีย์เฟรมเพื่อให้ภาพเคลื่อนไหวราบรื่น HTH


ภาพมาจากลำดับวิดีโอ แต่เดิม พวกเขามีเพียงการครอบตัดการปรับขนาดและสิ่งที่ไม่ได้ทำด้วย imagemagick เอฟเฟกต์เป็นสิ่งประดิษฐ์การบีบอัดแน่นอน ตอนนี้ฉันเห็นโพสต์นี้ซึ่งดูเหมือนจะมีคำตอบ: stackoverflow.com/questions/3158235/…
CakeMaster

@CakeMaster ฉันไม่ได้พูดถึงการบีบอัดแบบ lossy เพราะคุณมีภาพ ".png" ในตัวอย่างของคุณ .png อาจเสียได้ แต่ฉันพบว่ามักไม่เป็นเช่นนั้น .jpg มักจะสูญเสียเกือบตลอดเวลาดังนั้นสิ่งประดิษฐ์เมื่อใช้งาน หากทำได้คุณอาจบันทึกไฟล์. png ของคุณต่อด้วยการบีบอัดแบบไม่สูญเสียข้อมูล
JustBoo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.