我最近冒险处理与音频和视频相关的编码,但我对它们中的任何一个都知之甚少。
碰巧我现在有一个正在处理 mpeg-2 视频的项目。是否有任何可用的 python 库来提取 mpeg-2 视频本身的持续时间?
我不知道任何纯 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)
除了 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。