รับคุณภาพที่ดีที่สุดเมื่อแปลงจาก mp4 เป็น avi ด้วย ffmpeg อย่างไร


11

เมื่อฉันใช้สิ่งนี้คุณภาพก็ดูไม่เลว

ffmpeg -same_quant -i video.mp4 video.avi

ในffmpegเอกสารประกอบเขียนว่า: "โปรดทราบว่านี่ไม่ใช่คุณภาพเดียวกันห้ามใช้ตัวเลือกนี้หากคุณไม่ทราบว่าคุณต้องการ"

ฉันได้รับ-same_quantคุณภาพที่ดีที่สุดหรือมีตัวเลือกที่ให้คุณภาพเช่นเดียวกับอินพุตและแนะนำเพิ่มเติมหรือไม่


ทั้งนี้ขึ้นอยู่กับตัวแปลงสัญญาณที่ใช้ (ตัวแปลงสัญญาณบางตัวไม่เข้ากันกับภาชนะบางส่วน) คุณสามารถคัดลอกกระแส ( -codec copy) นี่คือวิธีที่ดีที่สุดในการหลีกเลี่ยงการเปลี่ยนแปลงคุณภาพเนื่องจากคุณไม่ได้เข้ารหัสสตรีมอีกครั้งเพียงทำการบรรจุใหม่ในคอนเทนเนอร์อื่น
njsg

เมื่อฉันลองทำสิ่งนี้ฉันจะได้รับ: Unknown decoder 'copy'.
sid_com

3
ดูเหมือนว่า-codec copyจะต้องไปหลังจาก -i video.mp4 - คุณสามารถลองffmpeg -i video.mp4 -codec copy video.avi? ( -same_quantทำงานที่นี่ด้วย แต่จะไม่ทำอะไรเลยเพราะนี่เป็นเพียงการคัดลอกลำธาร)
njsg

เกี่ยวกับการวางตำแหน่งตัวเลือกบรรทัดคำสั่งของ ffmpeg ให้ดูที่เอกสาร ffmpeg - 2 คำอธิบาย : นี่เป็นข้อความที่ตัดตอนมา: ตามกฎทั่วไปตัวเลือกจะถูกนำไปใช้กับ ไฟล์ที่ระบุถัดไป ดังนั้นการสั่งซื้อจึงเป็นสิ่งสำคัญ ...
Peter.O

ขอบคุณ! ขณะนี้มี-codec copyสถานที่ที่เหมาะสมคือการทำงาน
sid_com

คำตอบ:


14

(ดัดแปลงมาจากความคิดเห็นด้านบน)

ทั้งนี้ขึ้นอยู่กับตัวแปลงสัญญาณที่ใช้ (ตัวแปลงสัญญาณบางตัวไม่เข้ากันกับภาชนะบางส่วน) คุณสามารถคัดลอกกระแส ( -codec copy) นี่คือวิธีที่ดีที่สุดในการหลีกเลี่ยงการเปลี่ยนแปลงคุณภาพเนื่องจากคุณไม่ได้เข้ารหัสสตรีมอีกครั้งเพียงทำการบรรจุใหม่ในคอนเทนเนอร์อื่น

เมื่อจัดการกับไฟล์เสียง / วิดีโอเป็นสิ่งสำคัญที่ต้องจำไว้ว่าคอนเทนเนอร์นั้นส่วนใหญ่ไม่ขึ้นอยู่กับตัวแปลงสัญญาณที่ใช้ เป็นเรื่องปกติที่จะเห็นผู้คนที่อ้างถึงไฟล์ว่า "วิดีโอ AVI" หรือ "วิดีโอ MP4" แต่เป็นคอนเทนเนอร์และบอกเรานิดหน่อยว่าผู้เล่นจะสามารถเล่นสตรีมได้อย่างไรนอกเหนือจากข้อ จำกัด ทางเทคนิค (ตัวอย่างเช่นAVI อาจมีปัญหากับ h264 และ Ogg Vorbis ) คุณสามารถใช้ตัวแปลงสัญญาณใด ๆ

-same_quantดูเหมือนจะเป็นวิธีที่จะบอก ffmpeg เพื่อให้ได้คุณภาพที่คล้ายกัน แต่ทันทีที่คุณเข้ารหัสวิดีโอ (อย่างน้อยก็กับตัวแปลงสัญญาณที่สูญหาย) คุณก็ไม่มีทางจะได้คุณภาพเดียวกัน หากคุณกังวลเกี่ยวกับคุณภาพกฎง่ายๆคือหลีกเลี่ยงการเข้ารหัสสตรีมอีกครั้งหากเป็นไปได้

ดังนั้นในการคัดลอกสตรีมด้วย ffmpeg คุณต้องทำ:

ffmpeg -i video.mp4 -codec copy video.avi

(ดังที่ @ Peter.O พูดถึงคำสั่งออปชั่นเป็นสิ่งสำคัญดังนั้นนั่นคือ-codec copyต้องไปที่ไหนคุณยังสามารถเก็บไว้-same_quantได้ แต่จะไม่มีผลใด ๆ เนื่องจากคุณไม่ได้เข้ารหัสสตรีมอีกครั้ง)


ทางออกของคุณใช้ได้สำหรับฉัน ฉันเห็นว่าavconvตอนนี้ได้รับการแนะนำแทนที่ffmpegและที่จริงแล้วคือสิ่งที่ฉันใช้
Faheem Mitha

3

ภายใต้ FreeBSD 8. 2 ฉันพยายาม -codec copy แต่ได้รับข้อความถอดรหัสที่ไม่รู้จักเช่นกัน หลังจากการทดลองและข้อผิดพลาดฉันพบว่าการทำงานนั้นอยู่ภายใต้ FreeBSD:

ffmpeg -i video.mp4 -vcodec copy video.avi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.