2014-11-23 119 views
0

我一直在试图动态地改变gstreamer管道,但它只是在我改变状态时立即停止流。我在这里干什么?这里是我的代码:Gstreamer管道动态变化Python

#!/usr/bin/python 
import gobject 
import time 

gobject.threads_init() 
import pygst 

pygst.require("0.10") 
import gst 

p = gst.parse_launch("""filesrc location=/home/jango/Pictures/4.jpg name=src1 ! decodebin ! queue ! videoscale ! ffmpegcolorspace ! 
imagefreeze ! capsfilter name=vfps caps="video/x-raw-yuv, framerate=60/1, width=640, height=420" ! theoraenc ! oggmux name=mux ! filesink location=1.ogg""") 

p.set_state(gst.STATE_PLAYING) 
time.sleep(10) 
print "State change" 
p.set_state(gst.STATE_READY) 
source = p.get_by_name("src1") 
source.set_property("location", "/home/jango/Pictures/2.jpg") 
p.set_state(gst.STATE_PLAYING) 
gobject.MainLoop().run() 

请给我建议,如果有任何替代方法或可以参考我的任何教程。 在此先感谢。

回答

0

使用Gstreamer-Editing-Services可能是一个选项,它将为您处理所有的管道重新布线,并且使用比GStreamer更高级别的API。