如何使用gstreamer找到媒体的长度?

时间:2010-03-13 23:44:30

标签: python video media gstreamer

如何使用gstreamer找到媒体的播放时间?

3 个答案:

答案 0 :(得分:17)

这是一个简单的Python脚本,用于获取gstreamer可以解码的任何内容。请注意,gstreamer中的所有时间都是以纳秒为单位。

duration.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import division

import sys
import gobject
gobject.threads_init()
import pygst
pygst.require("0.10")
import gst
d = gst.parse_launch("filesrc name=source ! decodebin2 ! fakesink")
source = d.get_by_name("source")
source.set_property("location", sys.argv[1])
d.set_state(gst.STATE_PLAYING)
d.get_state()
format = gst.Format(gst.FORMAT_TIME)
duration = d.query_duration(format)[0]
d.set_state(gst.STATE_NULL)

import datetime
delta = datetime.timedelta(seconds=(duration / gst.SECOND))
print delta

示例:

$ python duration.py VIDEO_TS/VTS_03_1.VOB
0:20:10.528000
$ python duration.py ~/Movies/BigBuckBunny_640x360.m4v
0:09:56.461667

答案 1 :(得分:2)

见6.5节。

http://majorsilence.com/pygtk_audio_and_video_playback_gstreamer

它避免了创建管道并手动运行的需要。

答案 2 :(得分:0)

为什么重新发明轮子?
用途:
    gst-discoverer-1.0文件名

    gst-discoverer-0.10文件名

根据您要添加的文件类型" | grep持续时间"避免使用冗长的标签 为了摆脱视频,flac和mp3文件的无关标签,这应该通过使用grep来排除它们。 gst-discoverer-1.0 filename | grep -v Tags | grep -v ID3v2 | grep -v image | grep -v attachment