Исправьте плохие файлы и потоки с помощью ffmpeg, чтобы VLC и другие плееры не зависали

17

Много раз случалось так, что я мог оказаться в поврежденных видеофайлах:

  • видео скачано с официальных источников но с торрента и почему-то не все кусочки есть в .mkv, .ts или .mp4
  • записи в формате .ts, где в определенный момент отсутствуют данные
  • скопировал видео со старого жесткого диска с поврежденными секторами

Когда я играю это видео с VLC или другими игроками, они воспроизводятся до определенного момента, а затем сразу же выходят. Иногда я могу попытаться пропустить плохую часть, но я могу встретиться с другим плохим сектором и снова получить инсталляцию.

Вопрос:

Могу ли я решить эту проблему (я полагаю, связанные с потоком и ключевыми кадрами) с помощью ffmpeg и, возможно, с помощью -c-копии, чтобы мне не приходилось все заново сжимать?

Чего я хочу добиться, так это полнометражного видео, где пропущены недостающие части, я предпочитаю сбой, а не падение моих видео.

user3450548
источник

Ответы:

26

Если части файла находятся в физически поврежденных секторах или по какой-либо причине ОС не может передать весь файл FFmpeg, то, естественно, FFmpeg ничего не может с этим поделать. Вы должны получить утилиту, которая может игнорировать эти части и записать подлежащие восстановлению части в новый файл, например ddrescue .

Теперь, если файл протокола не является причиной ошибок, вы можете попробовать

ffmpeg -err_detect ignore_err -i video.mkv -c copy video_fixed.mkv
Gyan
источник
1
Это работает, но без сбоев -c copy. Удивительно, что это не работает во время перекодирования.
интуитивно
Даже с этим я все еще получаю Invalid data found when processing input- и ffmpeg сдается.
Михаил Т.
Хорошее решение ... если атом moov (в файле MP4) еще где-то присутствует. Что если его там даже нет?
Гвинет Ллевелин
Это работает на моем конце с удивительной добротой :)
Шириш
5

В поисках лучшего ответа возможный путь может быть:

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

Однако я уверен, что есть несколько дополнительных опций, которые могут сделать результат еще лучше.

user3450548
источник
1
Работает для меня каждый раз, когда у меня возникают какие-то проблемы с метаданными, временными метками или информацией о контейнере. И это очень быстро, обычно быстрее, чем 400-кратная скорость воспроизведения.
user24601
Эта команда спасла мою задницу, если честно.
neverMind9