Как правильно связать этот конвейер gstreamer?

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

filesrc ! h264parse ! avimux ! filesink

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

h264parse.get_pad('src0') 

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

2 ответа

Решение

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

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

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

Небольшой фрагмент кода, который работает с 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()
Другие вопросы по тегам