2011-09-08 66 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