我最近冒险尝试处理与音频和视频相关的编码,但我对它们都知之甚少。
碰巧我现在有一个处理mpeg-2视频的项目。有没有什么python库可以用来提取mpeg-2视频本身的时长?
发布于 2012-07-24 00:12:11
我不知道任何纯python实现。但也许opencv绑定对您有效:
import cv
cvcapture = cv.CaptureFromFile("movie.mpg")
cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FRAME_COUNT)否则,您可以使用pyffmpeg。注意:根据我的经验,帧计数通常不是很准确。Opencv 2.6运行得很好,但较早的版本有时只是垃圾。
编辑:啊,对不起,我的错误:这只给你帧计数。对于持续时间:将其与帧速率相乘:
cv.GetCaptureProperty(cvcapture,cv.CV_CAP_PROP_FPS)发布于 2012-07-24 01:52:41
除了opencv或ffmpeg之外,另一个选择可能是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然而,这个解决方案与当前的gstreamer版本(在Ubuntu 12.04上)随机崩溃(大约每100个文件)。也许你需要一些gstreamer插件来处理mpg-2;我现在不知道是哪一个。
我也在做一个或多或少的大型媒体项目,它应该能够处理大量的编解码器和容器,我们使用的每个库或多或少都是一团糟(错误的值或不稳定的)。也许有一些专门的mpg库在那里。
哦,VLC使用的是ffmpeg;所以如果你不被允许使用ffmpeg,你可能也不能使用VLC。
https://stackoverflow.com/questions/11615384
复制相似问题