Question

I have recently ventured out into dealing with audio and video related coding and i have limited knowledge about neither one of them.

It happens that i have a project that is dealing with mpeg-2 video now. Is there any python library that available out there to extract the duration of the mpeg-2 video itself?

Was it helpful?

Solution

I don't know any pure python implementations. But maybe the opencv bindings works for you:

import cv
cvcapture = cv.CaptureFromFile("movie.mpg")
cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FRAME_COUNT)

Otherwise, maye you can use pyffmpeg. Beware: It is my experience that the frame count is often not very accurate. Opencv 2.6 works very well, but ealier versions gives sometimes just garbage.

Edit: Ah, sorry my mistake: This gives you the frame count only. For the duration: Multiply this with the frame rate:

cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FPS)

OTHER TIPS

another option besides opencv or ffmpeg is maybe gstreamer:

import gst
from gst.pbutils import Discoverer

d = Discoverer(5000000000)
vid_info = d.discover_uri("file://<path>") # needs to be a full path
duration = vid_info.get_duration()

# convert to seconds
duration / gst.SECOND

However, this solution crashs randomly (every 100 file or so) with the current gstreamer version (on Ubuntu 12.04). And maybe you need some gstreamer plugin for working with mpg-2; I currently don't know which ones.

I am also working on a more or less large media project, which should be able to handle a large range of codecs and containers and every library we are using is more or less a mess (wrong values or instable). Maybe there is so some specialized mpg library out there.

Oh and VLC is using ffmpeg; so if you are not allowed to use ffmpeg you maybe are also not allowed to use VLC too.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top