ทำไม ffmpeg เพิ่มขนาดไฟล์?


0

ฉันพยายามเข้ารหัสวิดีโอในคุณภาพเดียวกันในรูปแบบเดียวกัน แต่ไฟล์เอาต์พุตมีขนาดใหญ่กว่าไฟล์อินพุตหลายเท่า ทำไมมันเกิดขึ้น? ฉันต้องการแก้ไขข้อผิดพลาดในการเข้ารหัส แต่ฉันไม่สามารถทำได้โดยไม่สูญเสียคุณภาพหรือเพิ่มขนาดไฟล์ วิธีการเข้ารหัสวิดีโอ mp4 โดยไม่สูญเสียคุณภาพและเพิ่มขนาดใน terminal Linux?

ฉันต้องการใช้วิดีโอเพื่อแสดงออนไลน์บนเว็บไซต์ของฉัน ฉันใช้สายเพื่อ ffmpeg ด้านล่าง

ffmpeg input.mp4 -c:v libx264 -preset placebo -crf 0 -c:a aac -movflags faststart output.mp4

ป.ล. ฉันจะเพิ่มตัวอย่างข้อผิดพลาดที่นี่ แม้ว่าฉันจะมาที่นี่ฉันต้องการเข้าใจว่าทำไม ffmpeg เพิ่มไฟล์ของฉัน ฉันพบสิ่งนี้เป็นประจำ นี่คือคำถามหลัก

[h264 @ 0x56524c25dea0] Invalid NAL unit 0, skipping.
[h264 @ 0x56524c25dea0] error while decoding MB 32 2, bytestream -7
[h264 @ 0x56524c216260] Invalid NAL unit 0, skipping.
[h264 @ 0x56524c216260] error while decoding MB 46 16, bytestream -5
[h264 @ 0x56524c25dea0] Invalid NAL unit 8, skipping.
[h264 @ 0x56524c25dea0] error while decoding MB 36 1, bytestream -13
[aac @ 0x56524c1e6ea0] Number of bands (57) exceeds limit (44).
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x56524c1e6ea0] channel element 3.10 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
...
[aac @ 0x56524c1e6ea0] Number of bands (48) exceeds limit (44).
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x56524c1e6ea0] Error decoding AAC frame header.
Error while decoding stream #0:1: Error number -50531338 occurred
[aac @ 0x56524c1e6ea0] Input buffer exhausted before END element found
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x56524c1e6ea0] decode_pce: Input buffer exhausted before END element found
Error while decoding stream #0:1: Invalid data found when processing input
[null @ 0x56524c1e7d20] Application provided invalid, non monotonically increasing dts to muxer in stream 1: 12351488 >= 12350464
[null @ 0x56524c1e7d20] Application provided invalid, non monotonically increasing dts to muxer in stream 1: 12351488 >= 12351488

1
"ข้อผิดพลาดในการเข้ารหัส" ที่คุณพยายามแก้ไขคืออะไร หากขนาดมีความสำคัญที่สุดทำไมไม่เพียงปล่อยไว้ตามที่ควรจะเป็นหรือลดคุณภาพหรือลดขนาดลง
Xen2050

ฉันเพิ่มมัน ถ้าอย่างนั้นฉันมีคำถาม 2 ข้อ: 1. ทำไม ffmpeg เพิ่มขนาดไฟล์สำหรับทุกกรณีด้วยคุณภาพเดียวกัน? 2. ฉันจะแก้ไขข้อผิดพลาดได้อย่างไรในกรณีของฉัน? เมื่อฉันเข้ารหัสไฟล์จากรูปแบบหนึ่งไปอีกรูปแบบหนึ่งฉันได้รับผลข้างเคียงในรูปแบบของการสูญเสียคุณภาพหรือเพิ่มขนาด ฉันยอมรับความจริงข้อนี้ได้ แต่! หากฉันเข้ารหัสไฟล์ในรูปแบบเดียวกันในคุณภาพดั้งเดิมทำไมขนาดไฟล์เพิ่มขึ้น เคล็ดลับนี้คืออะไร? ffmpeg กล่าวว่าที่นี่เป็นไฟล์เดียวกัน แต่ใหญ่กว่าเนื่องจากคุณไม่มีสิ่งใดที่จะครอบครองฮาร์ดไดรฟ์ มันไม่ธรรมดา!
karpo518

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

คำตอบ:


2

เหตุใดวิดีโอที่เข้ารหัสใหม่จึงมีขนาดใหญ่กว่าไฟล์อินพุตหลายเท่า

คุณกำลังบังคับใช้ตัวเข้ารหัสเพื่อใช้การตั้งค่าคุณภาพวิดีโอแบบไม่สูญเสีย -crf 0. สิ่งนี้ทำให้วิดีโอเอาต์พุตของคุณมีขนาดใหญ่กว่าอินพุท (สมมติว่าวิดีโออินพุตของคุณเข้ารหัสด้วยการตั้งค่าแบบสูญเสีย)

การตั้งค่าแบบไม่สูญเสียจะจำกัดความสามารถในการบีบอัดของตัวเข้ารหัสมาก กล่าวอย่างง่าย ๆ : ประสิทธิภาพการบีบอัดสูงที่ได้รับจากตัวแปลงสัญญาณวิดีโอส่วนใหญ่เช่น x264 นั้นเกิดจากการเข้ารหัสวิดีโอที่เสียซึ่งพยายามรักษาคุณภาพ "การรับรู้" ในขณะที่กำจัดข้อมูลที่ไม่สำคัญ

วิธีเข้ารหัสวิดีโอ mp4 โดยไม่สูญเสียคุณภาพและเพิ่มขนาดไฟล์

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

ค่อนข้างคุณสามารถลองทดสอบกับคนอื่น -crf ค่าเพื่อดูว่าคุณภาพ / ขนาดไฟล์ประเภทใดที่คุณได้รับจากวิดีโอเอาต์พุตของคุณ ด้วยการเข้ารหัสที่สูญเสียมันจะเป็นการแลกเปลี่ยนระหว่างคุณภาพและขนาดไฟล์เสมอ คุณสามารถอ่านค่าได้จากการเข้ารหัสการควบคุมบิตเรต ที่นี่ .

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