如何使用 gstreamer 找到媒体的播放时间?
问问题
6641 次
3 回答
18
这是一个简单的 Python 脚本,用于获取 gstreamer 可以解码的任何内容的持续时间。请注意,gstreamer 中的所有时间都以纳秒为单位。
持续时间.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
于 2010-03-14T06:16:05.350 回答
1
于 2010-04-01T18:38:38.570 回答
0
为什么要重新发明轮子?
使用:
gst-discoverer-1.0 文件名
或
gst-discoverer-0.10 文件名
根据文件类型,您可能需要添加“| grep Duration”以避免可能很长的标签。
为了消除视频、flac 和 mp3 文件的无关标签,这应该通过使用 grep 来排除它们来解决问题。
gst-discoverer-1.0 filename | grep -v Tags | grep -v ID3v2 | grep -v image | grep -v attachment
于 2015-07-24T17:15:50.767 回答