แก้ไขไฟล์และสตรีมที่ไม่ดีด้วย ffmpeg ดังนั้น VLC และผู้เล่นอื่น ๆ จะไม่ผิดพลาด


17

มันเกิดขึ้นกับฉันหลายครั้งที่ฉันสามารถจบลงด้วยไฟล์วิดีโอที่เสียหาย:

  • วิดีโอที่ดาวน์โหลดจากแหล่งข้อมูลอย่างเป็นทางการ แต่ด้วยฝนตกหนักและด้วยเหตุผลบางอย่างไม่ใช่ทุกชิ้นที่มีใน. mkv, .ts หรือ. mp4
  • บันทึกในรูปแบบ. ts เมื่อถึงจุดหนึ่งข้อมูลจะหายไป
  • คัดลอกวิดีโอจากฮาร์ดไดรฟ์เก่าที่มีเซกเตอร์เสียหาย

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

คำถามคือ:

ฉันสามารถแก้ไขปัญหานี้ได้หรือไม่ (ฉันสมมติว่าสตรีมและคีย์เฟรมเกี่ยวข้องกับ ffmpeg และอาจอยู่ในรูปแบบสำเนา -c ดังนั้นฉันจึงไม่ต้องบีบอัดทุกอย่างอีกหรือไม่

สิ่งที่ฉันต้องการบรรลุคือวิดีโอที่มีความยาวเต็มรูปแบบโดยที่ส่วนที่ขาดหายไปถูกข้ามไปฉันชอบความผิดพลาดมากกว่าที่วิดีโอของฉันจะพัง


ดูเพิ่มเติมที่: superuser.com/questions/538829/repairing-corrupt-mp4
awiebe

คำตอบ:


26

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

ตอนนี้ถ้าโปรโตคอลไฟล์ไม่ใช่สาเหตุของข้อผิดพลาดคุณสามารถลอง

ffmpeg -err_detect ignore_err -i video.mkv -c copy video_fixed.mkv

1
นี้ทำงาน -c copyแต่ล้มเหลวโดยไม่ต้อง น่าแปลกใจที่มันไม่ทำงานระหว่างการถอดรหัส
intuited

ถึงแม้จะเป็นเช่นนั้นฉันยังคงได้รับInvalid data found when processing input- และ ffmpeg ก็ยอมแพ้
Mikhail T.

วิธีแก้ปัญหาที่ดี ... ถ้า moov atom (บนไฟล์ MP4) ยังคงปรากฏอยู่ที่ใดที่หนึ่ง เกิดอะไรขึ้นถ้ามันไม่ได้อยู่ที่นั่น?
Gwyneth Llewelyn

มันทำงานได้ในตอนท้ายของฉันกับคุณงามความดีที่น่าแปลกใจ :)
Shirish

5

ในการค้นหาคำตอบที่ดีกว่าวิธีที่เป็นไปได้คือ:

ffmpeg -i video.mkv -c copy video_fixed.mkv

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


1
เหมาะกับฉันทุกครั้งที่ฉันมีปัญหาบางอย่างกับข้อมูลเมตาเวลาประทับหรือข้อมูลคอนเทนเนอร์ และมันก็เร็วมากซึ่งมักจะเร็วกว่า 400x
user24601

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