2013-09-02 3 views
0

Как мне связать этот конвейер gstreamer в коде python? (! Не с помощью gst.launch())Каким образом можно связать этот трубопровод gstreamer?

filesrc ! h264parse ! avimux ! filesink 

Когда я пытаюсь создать площадку объекта -

h264parse.get_pad('src0') 

он возвращает NoneType. Я также прикрепляю буфер к этой подушке.

ответ

1

Это очень прямо вперед, но вместо того, давая вам код, я предлагаю вам пойти и прочитать немного по этой теме, попробуйте этот один: http://www.jonobacon.org/2006/08/28/getting-started-with-gstreamer-with-python/

srcpadname для h264parse является «SRC», а не " src0 ', и именно поэтому он возвращает NoneType. 'src0' обычно используется только тогда, когда у вас есть элемент с запросами (например, Tee), но это не относится к h264parse.

Не стесняйтесь публиковать более полную кодовую попытку, если вы все еще не можете заставить ее работать.

+0

Много вещей изменилось в Gstreamer 1.0 специально в Python API, так что вы будете нужен новый более всеобъемлющий ссылку на этот раз:) https://wiki.ubuntu.com/Novacut/GStreamer1.0#Adding_PPA_for_Ubuntu_Precise. FYI: Люди Novacut - это удар, проверяющий их. –

0

Небольшой фрагмент кода, который работает с Gstreamer 1.0, Python 2.7:

import sys, os 
import gi 
gi.require_version('Gst', '1.0') 
from gi.repository import GObject, Gst, Gtk 
GObject.threads_init() 
Gst.init(None) 
pipeline = Gst.Pipeline() 
src = Gst.ElementFactory.make("filesrc", "src") 
parse = Gst.ElementFactory.make("h264parse", "parse") 
mux = Gst.ElementFactory.make("avimux", "mux") 
sink = Gst.ElementFactory.make("fakesink","sink") 

pipeline.add(src) 
pipeline.add(parse) 
pipeline.add(mux) 
pipeline.add(sink) 

pipeline.set_state(Gst.State.PLAYING) 
Gtk.main() 
+0

Не нужно называть 'link()'? –

+0

IIRC Pipeline.add делает это автоматически, @DanielAlder. ex http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-elements-link.html –