LINUX.ORG.RU

Как провалидировать мультимедиа файлы?

 , ,


0

1

Есть файлы следующих форматов:

  • Изображения:
    • png
    • jpg
    • gif
  • Видео:
    • webm
  • Флеш:
    • swf

Мне нужно провести валидацию файла одного из вышеперечисленных форматов. Что я подразумеваю под валидацией:

  • Файл соответствует заявленному разрешению (недокачанные файлы, в том числе 0 байт)
  • Присутствует запись о всех блоках (битые файлы)
  • Файл является файлом заявленного формата (mv file.png file.gif)

Как этого достичь?

★★★★★
Ответ на: комментарий от olibjerd

ЕМНИП, он только заголовки файлов читает, сколько то первых байт. Для валидации содержимого, думается это содержимое надо все прочитать. Если картинки, то прочитать картинку, если фильм, то прочитать весь фильм, а если в нем есть битые кадры - ну тогда и подаваьт сигнал тревоги. Вопрос интересный, сам бы попользовался подобной тульзенью

Pro100User
()

Заставить ffmpeg декодировать файл, проверить, есть ли ошибки. я обычно делаю что-то вроде

ffmpeg -loglevel warning -i $file -codec:v rawvideo -codec:a pcm_u8 -f null null

Если в выводе что-то есть, то это предупреждения и ошибки.

Andrey_Utkin ★★
()
Ответ на: комментарий от Andrey_Utkin

Спасибо. А оно не может побыстрее? Файл 44 метра, 2.5 минут:

time ffmpeg -loglevel warning -i $file -codec:v rawvideo -codec:a pcm_u8 -f null null

real	0m8.036s
user	0m22.400s
sys	0m0.396s

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

Можно демуксить, а не декодить. Гораздо быстрее, ошибок словит меньше, но под исходные требования подходит.

ffmpeg -loglevel warning -i $file -codec copy remuxed-${file}

# либо

ffmpeg -loglevel warning -i $file -codec copy -f <тот же формат или любой другой> -y /dev/null
Andrey_Utkin ★★
()
Последнее исправление: Andrey_Utkin (всего исправлений: 1)

Перекодировать что-то куда-то — это не вариант. Есть jpeginfo -c и pngcheck. Можешь ещё mediainfo попробовать

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.