2011-09-08 132 views
11

有沒有在python中獲取視頻文件或其他庫的尺寸的方法?相當於一個Media Info什麼的?謝謝。獲取視頻文件的尺寸

+5

-1:這個問題沒有顯示任何研究工作。你有沒有試過尋找任何東西?您在此問題中使用的關鍵字足以發現問題。 –

回答

5

在我上一次的公司,我們遇到了類似的問題,我找不到任何python庫來執行此操作。所以我最終使用Python的mediainfo,媒體信息也有一個命令行選項,它很容易解析輸出,所以實際上你的使用媒體信息的python模塊就足夠了。它有進一步的優勢,因爲最終你會發現所有的媒體信息類型的軟件不支持所有的編解碼器/格式,所以你可以在單個python包裝下使用多個軟件/庫。

+0

您不需要啓動進程來執行此操作,請參閱[我的答案](http://stackoverflow.com/a/15043503/309483)。 –

4

這個庫似乎有,不只是其主頁上的例子(print_info(vs)):

http://code.google.com/p/ffvideo/

它周圍的ffmpeg的包裝(似乎有一些Python庫使用的ffmpeg) 。

+2

不再編譯,並且看起來沒有維護 – Darioush

0

Pygame中的視頻模塊應該可以工作。

-9

老問題,但... 要獲得文件的大小:

file_size_in_Mio = os.path.getsize(name_of_video) //(1024*1024) 
+3

尺寸=寬度x高度 – Lucas

+0

我不認爲你讀過這個問題。考慮改進或刪除這個答案。 – Geoff

+0

請刪除這個答案,因爲它是完全錯誤的......與問題 – microchip78

2

你可以使用一個純Python的工具hachoir-metadata

#!/usr/bin/env python 
"""Get dimensions of a video file. 

Usage: get-video-dimensions <video-file> 
""" 
import sys 
from itertools import chain 

from hachoir_core.cmd_line import unicodeFilename 
from hachoir_metadata import extractMetadata 
from hachoir_parser import createParser 

if len(sys.argv) != 2: 
    sys.exit(__doc__) 

file_metadata = extractMetadata(createParser(unicodeFilename(sys.argv[1]))) 
print("%sx%s" % next((metadata.get('width'), metadata.get('height')) 
        for metadata in chain([file_metadata], file_metadata.iterGroups()) 
        if metadata.has('width') and metadata.get('height'))) 

要安裝:

$ pip install hachoir-{core,parser,metadata} 
+0

沒有任何關係。對於那些稍後會遇到的問題快速注意 - 針對Python 3的hachoir是一個不同的包:http://hachoir3.readthedocs.io/install .html - 'pip安裝hachoir3' – Nick

1

如果我正確地理解了你,你的意思是例如視頻的分辨率(768x432)。

這可以簡單地使用python中的opencv來完成。

import cv2 
file_path = "./video.avi" #change to your own video path 
vid = VideoCapture(file_path) 
height = vid.get(cv2.CAP_PROP_FRAME_HEIGHT) 
width = vid.get(cv2.CAP_PROP_FRAME_WIDTH) 
+0

這工作就像一個魅力謝謝 – Hakan