Как проверить, полностью ли загружено видео?

У меня есть куча видеороликов, которые я хочу проверить, полны они или нет. Некоторые из них могут быть загружены частично, но они не неисправны. Как я могу эффективно проверить, полностью ли загружено это видео?

Если бы у меня были ссылки, я бы проверял их размер, но я этого не делаю.

Я пытался использовать ffprobe и mediainfo . ffprobe сообщает о незначительных проблемах с частично загруженными файлами, но также сообщает о похожих проблемах с некоторыми полностью загруженными файлами. Должен ли я использовать ffmpeg для чтения всех файлов и сравнить длину видео, чтобы проверить, загружены ли они? Есть ли лучшее решение?

  • Пытается сжать avi-файл, используя ffmpeg
  • Как иметь непрерывный онлайн-поток с ffplay?
  • Как получить кодировку lilbmp3lame для работы с ffmpeg?
  • Сжатие онлайн-видео напрямую с помощью ffmpeg
  • возможно ли извлечение / копирование аудио из определенной части видеофайла?
  • Как сохранить один снимок рабочего стола в jpg с помощью ffmpeg?
  • Как загрузить часть видео с помощью команды youtube-dl? (2)
  • Запись видео и аудио с приложения X-Window
  • 3 Solutions collect form web for “Как проверить, полностью ли загружено видео?”

    ffmpeg – агностик, способный определять, полностью ли загружен видеофайл. Приведенная ниже команда дает команду ffmpeg читать входное видео и кодировать видео без изменений. Во время процесса кодирования любые ошибки, такие как отсутствующие кадры, выводятся в test.log.

     ffmpeg -v error-i FILENAME.mp4 -f null - 2>test.log 

    Если видеофайл не загружен полностью, в файле test.log будет много строк. Например, .1 МБ, отсутствующий в видеофайле, произвел 71 строку ошибок. Если видео полностью загружено и не было повреждено, ошибок не обнаружено, и в test.log не печатаются строки.


    редактировать

    В приведенном выше примере я протестировал весь файл, потому что тестовое видео, которое я загрузил, было торрентом, у которого могут отсутствовать фрагменты файла.

    Добавление «-sseof -60» в список аргументов проверяет последние 60 секунд файла, что значительно быстрее.

     ffmpeg -v error -sseof -60 -i FILENAME.mp4 -f null - 2>test.log 

    Вам понадобится более новая версия ffmpeg, 2.8 отсутствует флаг sseof, поэтому я использовал 3.0.

    MediaInfo отображает строку:

     Truncated: Yes 

    если файл не является полным, как ожидалось, спецификациями формата.

    Поскольку технически нет разницы между файлом, ошибочно (не отвечающим спецификациям о границах файлов), мультиплексированными и частично загруженными файлами, технически невозможно сделать разницу между багги-файлом и частично загруженным файлом.

    Другой (расширенный) тест может быть выполнен, например, при чтении индекса файла .mp4 и проверке того, что размер файла + размер кадра последнего кадра находится в пределах размера файла, который вы получаете, но это не совсем то, что вы ищете для (если в исходном файле есть метаданные, например плакаты, в конце файла, а файл усечен непосредственно перед этим плакатом, частичная загрузка до сих пор не обнаружена в каждом случае). Он не реализован в MediaInfo, но вы можете добавить запрос функции MediaInfo .

    Во всех случаях очень сложно обнаружить все частичные загрузки, поскольку общий размер файла не указан в большинстве форматов видеофайлов, поэтому вы можете быть уверены, что файл усечен, но вы не можете быть уверены, что файл не усечен. Единственный способ убедиться, что вы загрузили полный файл, – это получить размер файла из другого места (и лучше: иметь хэш, например MD5).

    PS: этот вопрос не относится ни к какой операционной системе.

    У меня был файл, где ffmpeg (v3.1.1) с -sseof -60 не показывал никаких предупреждений и просто вышел без указания, что что-то не так. Mediainfo не показывал, что файл был усечен. Только исключение -sseof -60 сообщит о любой ошибке с ffmpeg. Поэтому я вернулся к попытке ffprobe. Это показалось немного быстрее, чем ffmpeg.

     ffprobe -v error -count_frames -i filename.mp4 

    произвел этот результат

     [h264 @ 00000000004e6a60] Invalid NAL unit size. [h264 @ 00000000004e6a60] Error splitting the input into NAL units. [mov,mp4,m4a,3gp,3g2,mj2 @ 00000000004e5280] stream 1, offset 0x1350135: partial file 

    Я еще не встречал никаких ложных срабатываний (как сообщает OP).

    Изменить : ffprobe был на моих тестовых файлах примерно на 10% быстрее, чем ffmpeg, но только если вы поручите ему использовать все ядра с опцией '-threads 0'. В противном случае он использует только один ядро ​​/ поток и работает медленнее.

    Interesting Posts

    Как создать загрузочный заголовок для загрузки powerpc MPC8309twr с SD-картой

    Как приостановить перечисление длинного текстового файла с кошкой в ​​командной строке после 10 строк, затем нажмите любую клавишу

    Установка пакета (изящество) с использованием yum на CentOS

    Fluxbox: Переключить RootMenu с помощью Mouse1

    Для перенаправления ввода существуют функциональные различия между bash / zsh <<< «$ (<файл)» и традиционным <file?

    Невозможно форматировать диск с помощью команды mkfs на CentOS 7

    Как печатать с удаленного компьютера через SSH на локальный сетевой принтер?

    Ошибки при запуске моей системы Wheezy

    Сервер VNC без системы X Window

    Как отключить экран входа в список пользователей в Gnome 3 на Fedora 16 или 17?

    Временная шкала прерывания для одного процесса, выполняющего вывод

    Возможно ли подключение Wi-Fi и Ethernet к одной сети?

    Почему «rxvt -font x» дает мне ошибку, но «лучший» шрифт, чем обычный «rxvt»?

    Apache autoindex: отключить гиперссылки?

    Отменить модификацию iptables

    Linux и Unix - лучшая ОС в мире.