Как правильно связать этот конвейер 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()