2012-01-09 90 views
7

我想使用gstreamer綁定在Python中顯示圖像,但不使用GTK +(我在ARM上)。沒有gtk的顯示圖像

我知道如何聽音樂蟒蛇的GStreamer:

#!/usr/bin/python 
# Simply initiates a gstreamer pipeline without gtk 
import gst 
import gobject 
import sys 

mainloop = gobject.MainLoop() 
my_bin = gst.element_factory_make("playbin") 
my_bin.set_property("uri", "file:///home/Lumme-Badloop.ogg") 
my_bin.set_state(gst.STATE_PLAYING) 

try: 
    mainloop.run() 
except KeyboardInterrupt: 
    sys.exit(0)  

我知道如何在GStreamer在命令行中顯示的圖像:

gst-launch-0.10 filesrc location=image.jpeg ! jpegdec ! freeze ! videoscale ! ffmpegcolorspace ! autovideosink 

我想什麼是確切的同樣的事情,但使用Python。

我試了一些東西,代碼運行沒有錯誤,但沒有在屏幕上顯示。

pipe = gst.Pipeline("mypipe") 

source = gst.element_factory_make("filesrc", "filesource") 
demuxer = gst.element_factory_make("jpegdec", "demuxer") 
freeze = gst.element_factory_make("freeze", "freeze") 
video = gst.element_factory_make("videoscale", "scaling") 
ffm = gst.element_factory_make("ffmpegcolorspace", "muxer") 
sink = gst.element_factory_make("autovideosink", "output") 

pipe.add(source, demuxer, freeze, video, ffm, sink) 

filepath = "file:///home/image.jpeg" 
pipe.get_by_name("filesource").set_property("location", filepath) 

pipe.set_state(gst.STATE_PLAYING) 

你有什麼想法可以幫助我嗎?

感謝提前!

順便說一句,我也有audiotest和videotest工作。下面是運行正常的示例:

# Create GStreamer pipeline 
pipeline = gst.Pipeline("mypipeline") 
# Set up our video test source 
videotestsrc = gst.element_factory_make("videotestsrc", "video") 
# Add it to the pipeline 
pipeline.add(videotestsrc) 
# Now we need somewhere to send the video 
sink = gst.element_factory_make("xvimagesink", "sink") 
# Add it to the pipeline 
pipeline.add(sink) 
# Link the video source to the sink-xv 
videotestsrc.link(sink) 

pipeline.set_state(gst.STATE_PLAYING) 
+0

您是否嘗試過其他接收器,例如'xvimagesink'或'ximagesink'? – jcollado 2012-01-09 15:02:47

+0

我就在這個時刻。我通過videosink獲得了一個工作示例。我把它放在我的帖子的末尾。感謝您的幫助 – jlengrand 2012-01-09 15:15:01

+0

@jlengrand:您可以回答自己的問題,並將其關閉。它通常是我們如何處理這種情況。 – Will 2012-01-11 14:00:00

回答

3

與嘗試:

文件路徑= 「/home/image.jpeg」

filesrc的位置屬性採用的文件路徑,而不是一個URI。您應該檢查管道總線上的錯誤消息。或者用GST_DEBUG = *:3 yourapp.py運行你的代碼,看看是否有問題/錯誤。

此外,您還可以做

管道= gst.parse_launch( 「filesrc位置= /家庭/富/ image.jpg的!JPEGDEC!....」)

而不是建立自己的管道(對於簡單的事情,無論如何,parse_launch有點有限)。

+0

感謝您的信息添。我曾嘗試啓用調試,但在gstreamer中找不到相關消息。我認爲問題來自於我試圖簡單地顯示一個圖像並且管道等待視頻。我一定會嘗試你的兩個其他提示,並讓你知道! – jlengrand 2012-01-12 08:46:37