2013-07-25 33 views
1

是否有任何Python庫可用於檢測文件是否爲視頻?我讓用戶將視頻上傳到我的網站,我想要阻止圖像和文檔以及除視頻文件類型之外的任何內容。我現在的計劃是上傳任何文件,測試它,如果它不是視頻,刪除它,如果它通過正常的管道處理它。我很想以某種方式測試腐敗視頻,但那是另一回事。檢測文件是否是Python中的視頻?

我需要能夠支持沒有擴展名的視頻。我原以爲的MIME類型庫可以做到這一點,但是當我做到以下幾點:

import mimetypes 

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

我得到:

(None, None) 

我使用谷歌應用程序引擎,所以我所有的內置庫,但可以添加幾乎任何東西。

+0

https://github.com/ahupp/ python-magic ...但它看起來像你需要手動安裝一些DLL的(除非你在* nix上) –

回答

1

安裝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並匹配來自純文本數據庫的模式。

如果谷歌應用程序引擎讓你訪問libmagic(我懷疑,但我不熟悉它),你可以安裝python-magic來使用它。

否則,最好的辦法可能是下載簽名數據庫。你可以找到例如FreeBSD使用的那個for videos在線。該文件格式的文件是also online

使用這些簽名,您應該能夠通過讀取文件的開頭並將其與簽名進行匹配來檢測文件的類型。

相關問題