13

gstreamerでメディアの再生時間を見つけるにはどうすればよいですか?

4

3 に答える 3

18

以下は、gstreamer がデコードできるものの継続時間を取得するための簡単な Python スクリプトです。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

セクション 6.5 を参照してください。

http://majorsilence.com/pygtk_audio_and_video_playback_gstreamer

パイプラインを作成して手動で実行する必要がなくなります。

于 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 に答える