Wie finde ich die Wiedergabezeit von Medien mit Gstreamer?Wie finde ich die Länge der Medien mit Gstreamer?
Antwort
Hier ist ein einfaches Python-Skript, um die Dauer von allem, was Gstreamer dekodieren kann, zu erhalten. Beachten Sie, dass alle Zeiten in gstreamer in Nanosekunden sind.
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
Beispiele:
$ python duration.py VIDEO_TS/VTS_03_1.VOB
0:20:10.528000
$ python duration.py ~/Movies/BigBuckBunny_640x360.m4v
0:09:56.461667
Siehe Abschnitt 6.5.
http://majorsilence.com/pygtk_audio_and_video_playback_gstreamer
Es vermeidet Notwendigkeit, eine Pipeline und führen Sie es manuell zu erstellen.
Können Sie die Grundidee aus diesem Artikel in Ihren Beitrag aufnehmen? Link-Only-Antworten neigen dazu, im Laufe der Zeit zu verrotten. (Dieser Link ist bereits 404) – ComputerDruid
Warum das Rad neu erfinden?
Verwendung:
gst-Entdecker-1.0 Dateiname
oder
gst-Entdecker-0.10 Dateiname
Je nach Dateityp, den Sie hinzufügen möchten „| grep Dauer“ die Tags zu vermeiden, die langwierig sein kann .
Zum Entfernen überflüssiger Tags für Video-, Flac- und MP3-Dateien sollte dies der Fall sein, indem grep verwendet wird, um sie auszuschließen.
gst-discoverer-1.0 filename | grep -v Tags | grep -v ID3v2 | grep -v image | grep -v attachment
Es gibt weniger als die Gesamtdauer des Streams für mich. Bei einem MKV-Video mit 83 Sekunden werden beispielsweise 880 ms zurückgegeben. Vielleicht ein Problem mit Metadaten? Andere Spieler spielen die Datei korrekt und das MKV selbst wird von der gleichen Version von gstreamer erzeugt. – fviktor