diff options
author | zxiiro <zxiiro@enkei.l.zxiiro.ca> | 2010-01-29 14:40:56 -0500 |
---|---|---|
committer | zxiiro <zxiiro@enkei.l.zxiiro.ca> | 2010-01-29 14:40:56 -0500 |
commit | 2fe934f4a4be09c85365010c8c8ee9f29e2d45b6 (patch) | |
tree | e30e02704801c5a80223660faecada2a533a43ac | |
parent | 6299cf8270a735f996fe08b20e95ef6ddadb08c0 (diff) | |
download | freeseer-2fe934f4a4be09c85365010c8c8ee9f29e2d45b6.tar.gz freeseer-2fe934f4a4be09c85365010c8c8ee9f29e2d45b6.tar.xz freeseer-2fe934f4a4be09c85365010c8c8ee9f29e2d45b6.zip |
Work in progress on making gst component modular.
-rwxr-xr-x | freeseer.py | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/freeseer.py b/freeseer.py index cb6f640..5f80b96 100755 --- a/freeseer.py +++ b/freeseer.py @@ -62,7 +62,39 @@ class GSTPlayerWidget(QtGui.QWidget): def __init__(self, parent): QtGui.QWidget.__init__(self, parent) - self.player = gst.parse_launch(CMD_GSTLAUNCH % CONFIG) + self.player = gst.Pipeline("player") + + # GST Video + self.vidsrc = gst.element_factory_make("v4l2src", "vidsrc") + self.vidtee = gst.element_factory_make("tee", "vidtee") + self.vidqueue1 = gst.element_factory_make("queue", "vidqueue1") + self.vidqueue2 = gst.element_factory_make("queue", "vidqueue2") + self.vidcodec = gst.element_factory_make("theoraenc", "vidcodec") + self.vidsink = gst.element_factory_make("autovideosink", "vidsink") + #self.vidsink.set_property("sync", "false") + + # GST Sound + self.sndsrc = gst.element_factory_make("alsasrc", "sndsrc") + self.sndqueue = gst.element_factory_make("queue", "sndqueue") + self.audioconvert = gst.element_factory_make("audioconvert", "audioconvert") + self.sndcodec = gst.element_factory_make("vorbisenc", "sndcodec") + + # GST Muxer + self.mux = gst.element_factory_make("matroskamux", "mux") + self.filesink = gst.element_factory_make("filesink", "filesink") + self.filesink.set_property("location", CONFIG['FILENAME']) + + # GST Add Components + self.player.add(self.vidsrc, self.vidtee, self.vidqueue1, self.vidqueue2, self.vidcodec, self.vidsink) + self.player.add(self.sndsrc, self.sndqueue, self.audioconvert, self.sndcodec) + self.player.add(self.mux, self.filesink) + + # GST Link Components + gst.element_link_many(self.vidsrc, self.vidtee) + gst.element_link_many(self.vidtee, self.vidqueue1, self.vidcodec, self.mux) + gst.element_link_many(self.vidtee, self.vidqueue2, self.vidsink) + gst.element_link_many(self.sndsrc, self.sndqueue, self.audioconvert, self.sndcodec, self.mux) + gst.element_link_many(self.mux, self.filesink) bus = self.player.get_bus() bus.add_signal_watch() @@ -98,8 +130,7 @@ class GSTPlayerWidget(QtGui.QWidget): gst.element_link_many(newsrc, vidtee) def record(self): - filesink = self.player.get_by_name("filesink") - filesink.set_property("location", CONFIG['FILENAME']) + self.filesink.set_property("location", CONFIG['FILENAME']) self.player.set_state(gst.STATE_PLAYING) def stop(self): |