Khắc phục các tệp và luồng xấu bằng ffmpeg để VLC và các trình phát khác không bị sập


17

Nó đã xảy ra với tôi nhiều lần rằng tôi có thể kết thúc trong các tệp video bị hỏng:

  • video được tải xuống từ các nguồn chính thức nhưng với torrent và vì một số lý do, không phải tất cả các phần đều có trong .mkv, .ts hoặc .mp4
  • các bản ghi ở định dạng .ts trong đó tại một thời điểm nhất định, dữ liệu bị thiếu
  • sao chép video từ một ổ cứng cũ với các khu vực bị hư hỏng

Khi tôi phát video này bằng VLC hoặc những người chơi khác, họ phát đến một điểm nhất định và sau đó thoát ngay lập tức. Đôi khi tôi có thể cố gắng bỏ qua phần xấu nhưng tôi có thể gặp một khu vực xấu khác và lại bỏ cuộc.

Câu hỏi là:

Tôi có thể khắc phục sự cố này không (tôi cho rằng luồng và khung hình chính có liên quan) với ffmpeg và có thể theo kiểu sao chép -c để tôi không giải nén mọi thứ?

Những gì tôi muốn đạt được là một video có chiều dài đầy đủ trong đó các phần bị thiếu được bỏ qua, tôi thích một trục trặc hơn là làm cho video của tôi bị sập.


Câu trả lời:


26

Nếu các phần của tệp nằm trên các thành phần xấu về mặt vật lý hoặc vì bất kỳ lý do gì, HĐH không thể phục vụ toàn bộ tệp cho FFmpeg, thì đương nhiên FFmpeg không thể làm gì về điều đó. Bạn sẽ nhận được một tiện ích có thể bỏ qua các phần đó và viết các phần có thể cứu được vào một tệp mới, như ddresTHER .

Bây giờ, nếu giao thức tệp không phải là nguyên nhân gây ra lỗi, bạn có thể thử

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

1
Điều này hoạt động, nhưng thất bại mà không có -c copy. Đáng ngạc nhiên là nó không hoạt động trong quá trình recode.
trực giác

Ngay cả với điều đó, tôi vẫn nhận được Invalid data found when processing input- và ffmpeg bỏ cuộc.
Mikhail T.

Giải pháp tuyệt vời ... nếu nguyên tử moov (trên tệp MP4) vẫn còn hiện diện ở đâu đó. Điều gì nếu nó thậm chí không có ở đó?
Gwyneth Llewelyn

Nó hoạt động ở cuối của tôi với lòng tốt đáng ngạc nhiên :)
shirish

5

Trong quá trình tìm kiếm câu trả lời tốt hơn, một cách có thể là:

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

Tuy nhiên tôi khá chắc chắn rằng có một số tùy chọn bổ sung có thể làm cho kết quả thậm chí tốt hơn ..


1
Hoạt động cho tôi mỗi khi tôi gặp một số loại vấn đề với dữ liệu meta, dấu thời gian hoặc thông tin về bộ chứa. Và nó rất nhanh, thường nhanh hơn 400 lần lượt chơi.
user24601

Lệnh này đã cứu mông tôi, thành thật mà nói.
neverMind9
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.