我最近冒险处理与音频和视频相关的编码,而且我对这两种编码都知之甚少。
碰巧我现在有一个处理mpeg-2视频的项目。是否有可用的python库来提取mpeg-2视频本身的持续时间?
答案 0 :(得分:1)
我不知道任何纯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)
答案 1 :(得分:1)
除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
但是,此解决方案随机崩溃(每100个文件左右)与当前的gstreamer版本(在Ubuntu 12.04上)。也许你需要一些gstreamer插件来使用mpg-2;我目前不知道哪些。
我还在开发一个或多或少的大型媒体项目,该项目应该能够处理大量的编解码器和容器,而我们使用的每个库或多或少都是混乱(错误的值或不稳定)。也许那里有一些专门的mpg库。
哦,VLC正在使用ffmpeg;因此,如果您不允许使用ffmpeg,也可能也不允许使用VLC。