2013-07-25 2 views
1

Есть ли какая-нибудь библиотека Python, которую я могу использовать, чтобы определить, является ли файл видео? Я разрешаю пользователям загружать видео на мой сайт, и я хочу предотвратить изображения и документы и все, кроме видеофайлов. Я планирую прямо сейчас загрузить любой файл, протестировать его, если это не видео, удалить его, если он обрабатывает его через обычный конвейер. Мне бы хотелось как-то проверить на испорченное видео, но это другое дело.Обнаружение, если файл является видео в Python?

Мне нужно иметь возможность поддерживать видео без расширений. Я думал, что библиотека MIMETYPES может сделать это, но когда я делаю следующее:

import mimetypes 

url = 'http://thehighlightnetwork.appspot.com/serve/AMIfv94NsD5mUOwE60RnMSsBKVUsgilNyNJZawl30CRqVnLad7HkNeMmdBQCMhiAOXc0N9onNGjAM19TTVENEPjAwpeQZ6dq25CWjD5DzQXoK0c4IaPum_L-83EQS4SeUNqOCEYleHTskfkhfC8BXZJQtlyA99g2nN9lrfCXWrNGYPtjDeZETEQ' 
print mimetypes.guess_type(url) 

я получаю:

(None, None) 

Я использую Google App Engine, так у меня есть все встроенные в библиотеках, но может добавить почти ничего.

+0

https://github.com/ahupp/ python-magic ... но похоже, что вам нужно будет вручную установить некоторые DLL (если вы не на * nix) –

ответ

1

Установка python-magic, ОС-независимый

pip install python-magic 

зависимостями для Windows, и OSX

В Windows, вам необходимо скачать и сохранить следующие библиотеки под C: \ Windows \ System32:

regex2.dll from sourceforge.net/projects/gnuwin32/files/regex/ 
zlib1.dll from sourceforge.net/projects/gnuwin32/files/zlib/ 
magic1.dll from sourceforge.net/projects/gnuwin32/files/file/ 

В OSX:

When using Homebrew: brew install file-formula 
When using macports: port install file 

Затем выполнить код в Python:

import magic 
magic.from_file("path/to/file/filename.extension") 

# usage example 
magic.from_file("test/test.avi", mime=True) 

Для более подробной информации см Python-Magic

выход, когда я побежал:

>>> import magic 

>>> magic.from_file("test.avi") 
'RIFF (little-endian) data, AVI, 320 x 240, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 22050 Hz)' 
1

В системах UNIX существует программа для идентификации файлов. Он называется file и соответствует шаблонам из базы данных простого текста.

Если Google app-engine предоставляет вам доступ к libmagic (что я сомневаюсь, но я не знаком с ним), вы можете установить python-magic, чтобы использовать это.

В противном случае, вероятно, лучший способ - загрузить базу данных подписи. Вы можете найти, например. тот, который используется FreeBSD for videos онлайн. Документация формата файла такова: also online.

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

Смежные вопросы