ใช้ ffmpeg เพื่อแปลง mp4 เป็นไฟล์ avi คุณภาพสูงเหมือนกันหรือไม่


28

ฉันต้องการใช้ ffmpeg เพื่อแปลงไฟล์วิดีโอ mp4 เป็น avi แต่มีคุณภาพเดียวกันแม้ว่าจะใช้พื้นที่มากขึ้น ถ้าฉันเพียงทำ:

ffmpeg -i file.mp4 file.mp4.avi

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


3
คุณสามารถใช้-sameqสวิตช์ซึ่งจะใส่ตัวแปลงสัญญาณวิดีโอ (สมมติว่า H264) ในคอนเทนเนอร์ AVI หากเครื่องเล่นของคุณไม่รองรับ H264 ใน AVI คุณต้องแปลงรหัสรูปแบบวิดีโอที่ดีที่สุด (H264) ให้เป็นรูปแบบปานกลางซึ่งไม่ดี จากนั้นคุณกำหนดบิตเรตวิดีโอ XVID ที่สูงขึ้น (สมมติว่า 2000 Kb / s) เสียงไม่ได้มีความสำคัญเท่าไหร่กับ IMHO แต่ควรแปลงเป็น MP3 แล้ว AC3
zetah

คำตอบ:


16

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

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

ครั้งสุดท้ายที่ฉันแปลงรหัสวิดีโอที่ฉันใช้qscale=8.0แต่ฉันขอแนะนำให้คุณทดสอบเพื่อหาสิ่งที่เหมาะสมที่สุดเพื่อให้ตรงกับคุณภาพของอินพุตของคุณ

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


ขอบคุณสำหรับเคล็ดลับฉันจะลอง-sameqดูว่ามันจะไปอย่างไร
719016

8
-sameq ไม่ได้หมายถึงคุณภาพเดียวกัน; ffmpeg.org/trac/ffmpeg/wiki/…

3
ดูเหมือนว่าจะแนะนำให้ใช้-qscale 0ตัวเลือก
user989762

ค่อนข้างเก่า แต่ฉันได้รับคำเตือนนี้พยายามทำสิ่งนี้ในวันนี้:Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Dave Lugg

10

ทางออกของฉัน:

ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi

สนุก!!


2
โปรดทราบว่าการฝังกระแส AVC ในคอนเทนเนอร์ AVI ต้องมีการแฮ็กที่ได้รับการสนับสนุนจากเครื่องเล่นวิดีโอที่ขับเคลื่อนโดยชุมชน (เช่น VLC, MPlayer, อะไรก็ตามที่ FFmpeg / Libav หรือ GStreamer, Media Player Classic) แต่ไม่ใช่ผู้เล่นเชิงพาณิชย์หลายคน (เช่น Windows Media Player และ QuickTime / iTunes ไม่รองรับ)
David Foerster

4

นี่คือ 2-pass (Advanced Simple Profile) ที่ฉันใช้ตอนนี้

ผ่าน 1:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -pass 1 -an -threads 0 -f rawvideo -y /dev/null

ผ่าน 2:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -acodec libmp3lame -ab 128k -ar 48000 -ac 2 -pass 2 -threads 0 -f avi file.avi

เยี่ยมมากผลิต avi เล็ก ๆ ให้ฉันคุณภาพดีมาก!
jpo38
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.