Это название может вводить в заблуждение, поэтому позвольте мне объяснить ...
Я загружаю видеофайл ... MPEG, AVI - будучи одним из популярных форматов. Теперь, если я загружаю его, а загрузка прерывается в середине загрузки ... тогда, например, проигрыватель Windows Media выдаст ошибку и откажется ее воспроизвести (хотя файл, скажем, Заполнено на 98%). Но такие игроки, как KMPlayer или MediaPlayer Classic будут воспроизводить его до этого момента (фактически, они могут воспроизводить его и во время загрузки).
Итак, мне интересно ... без использования каких-либо средств загрузки (менеджеров загрузки и т. П.) Для обеспечения полной загрузки файла, как можно проверить, был ли загружен видеофайл целиком и завершен ли он?
avi
mpeg
verification
ладья
источник
источник
Incomplete MPEG should play with no problems.
@bobince, вопрос был в том, как проверить наличие повреждений, а не как воспроизвести неполный файл. Даже если формат поддерживает воспроизведение неполных файлов, все равно должна быть возможность проверить наличие повреждений, если файл не соответствует спецификациям формата. Например, вы все еще можете прочитать неполный текстовый файл, но вы все равно можете определить, есть ли у файла проблемы, например, заканчивается ли он в середине предложения или есть фрагмент явно пропущенной информации в середине.Ответы:
Вы можете использовать функцию в
ffmpeg
видео конвертере: если вы укажете ее, чтобы перекодировать видео в ноль, он просто прочитает входной файл и сообщит обо всех появившихся ошибках. Это очень быстрый процесс, потому что видеокадры просто читаются, проверяются и автоматически отбрасываются.Пример командной строки: (для Linux)
-v error
означает определенный уровень многословия (чтобы показать некоторые ошибки, которые обычно скрыты, потому что они не сильно влияют на играбельность).Вы получите полный журнал ошибок с некоторой общей информацией о файле, который будет выводить ffmpeg, так что это, вероятно, потребует вашего внимания, через фильтры можно написать для выполнения пакетной проверки похожих файлов.
FFmpeg также доступен для Windows здесь . Командная строка будет практически идентична за исключением перенаправления stderr:
источник
ffprobe
который поставляется в комплекте сffmpeg
. Он не выполняет никакого преобразования, а просто читает информацию метаданных из файла. Поэтому он обнаружит ошибки в метаданных, но не обнаружит никаких проблем в самом файле. Лично используюffprobe
для быстрой проверки загруженных данных перед дальнейшей обработкой-map
), что значительно ускорит работу: вffmpeg -v error -i in.mkv -map 0:1 -f null …
случае ошибки будет занесена позиция байта, которую вы можете использовать для усечения файла (мегабайт или два ранее, чтобы быть в безопасности), а затем возобновить загрузку.Мне понравилась идея использования
ffmpeg -f null
выше, но я бы хотел автоматизировать процесс использования этого вывода. В частности, общий сценарий моей коллекции музыкальных видео состоит в том, что у меня есть несколько клипов с одинаковым разрешением, и я хотел бы просмотреть журналы проверки для этих файлов, чтобы удалить наиболее поврежденные.К сожалению, пока у ffmpeg нет способа отключить интерактивный режим, который выводит шум для этого случая использования. В итоге я взломал простой скрипт-обертку для фильтрации:
Пример вывода:
источник
Для окон вы можете «пакетно» проверить целостность видео в текущей папке и всех подпапках с помощью этого bat-файла:
checkvideo.bat
Использование:
checkvideo.bat [filter]
Если вы не дадите один фильтр, получите «* .mp4».
Образцы:
checkvideo.bat
checkvideo.bat *.avi
Установка: Загрузите FFmpeg для Windows отсюда: https://ffmpeg.zeranoe.com/builds/ и разархивируйте их. Измените
C:\ffmpeg\bin\
в файле bat путь, по которому вы распаковали ffmpeg. Поместитеcheckvideo.bat
папку, включенную в путь, или добавьте его в папку. Переменная окружения путиисточник
Проблема с другим ответом, используемым
ffmpeg
для перекодирования вnull
формат, заключается в том, что это занимает действительно много времени. Особенно, если вы хотите проверить несколько файлов в каталоге.Быстрый способ - создать миниатюры для всех видео и посмотреть, где не удается создать миниатюру.
Этот метод оказался намного быстрее, чем другие методы.
Тем не менее, есть CAVEAT. Этот метод может дать неправильные результаты, потому что иногда миниатюра может быть сгенерирована даже для поврежденных файлов. Например, если видеофайл поврежден только в конце, этот метод не удастся.
источник
MediaInfo - это отличный инструмент для получения информации о любом видеофайле, который вы хотите добавить. Это может быть в состоянии выделить информацию, которую вы хотите.
Другим инструментом является GSpot, но он не обновлялся с 2007 года.
Попробуйте дать каждому известный хороший и известный плохой файл и сравните результаты.
Я использовал GSpot до тех пор, пока он не перестал обновляться, затем переключился на MediaInfo
источник
mediainfo *
.mediainfo
видимо не проверяет на полноту. Я взял 33 МБwebm
видеофайл и сделалtruncate
его наполовину.mediainfo
у обоих был почти одинаковый результат для обоих, без видимых признаков коррупции. Послеtruncate
увеличения до 1 МБ на выходе все еще не было явных признаков повреждения. Только если вы глубже взглянули на вывод, появилась некоторая противоречивая информация. Но эти части зависят от формата видеофайла, поэтому вы не можете автоматизировать это обнаружение.mediainfo
не читает ничего, кроме метаданных. Это не будет проверять действительность вашего файла в любом случае.