mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from gi.repository import Gst, GES, GLib
|
|
|
|
import os
|
|
|
|
class Simple:
|
|
def __init__(self, uri):
|
|
timeline = GES.Timeline()
|
|
trackv = GES.Track.video_raw_new()
|
|
self.layer = GES.TimelineLayer()
|
|
self.pipeline = GES.TimelinePipeline()
|
|
self.pipeline.add_timeline(timeline)
|
|
|
|
|
|
timeline.add_track(trackv)
|
|
timeline.add_layer(self.layer)
|
|
|
|
GES.Asset.new_async(GES.TimelineFileSource, uri, None, self.discoveredCb, None)
|
|
self.loop = GLib.MainLoop()
|
|
self.loop.run()
|
|
|
|
def discoveredCb(self, asset, result, blop):
|
|
self.layer.add_asset(asset, long(0), long(0), long(10 * Gst.SECOND), 1.0, GES.TrackType.VIDEO)
|
|
self.start()
|
|
|
|
def busMessageCb(self, bus, message, udata):
|
|
if message.type == Gst.MessageType.EOS:
|
|
print "EOS"
|
|
self.loop.quit()
|
|
if message.type == Gst.MessageType.ERROR:
|
|
print "ERROR"
|
|
self.loop.quit()
|
|
|
|
def start(self):
|
|
self.pipeline.set_state(Gst.State.PLAYING)
|
|
self.pipeline.get_bus().add_watch(GLib.PRIORITY_DEFAULT, self.busMessageCb, None)
|
|
|
|
if __name__ == "__main__":
|
|
if len(os.sys.argv) < 2:
|
|
print "You must specify a file URI"
|
|
exit(-1)
|
|
GES.init()
|
|
|
|
# And try!
|
|
Simple(os.sys.argv[1])
|