#!/usr/bin/python3 import gi, time import socket # import GStreamer and GTK-Helper classes gi.require_version('Gst', '1.0') from gi.repository import GLib, Gst, GObject # init GObject before importing local classes GObject.threads_init() Gst.init(None) class Example: def __init__(self): self.mainloop = GObject.MainLoop() self.src = Gst.parse_launch(""" tcpserversrc port=10000 ! matroskademux name=demux demux. ! audio/x-raw,format=S16LE,channels=2,layout=interleaved,rate=48000,channel-mask=(bitmask)0x3 ! queue ! tee name=atee atee. ! queue ! interaudiosink channel=audio_cam1_mixer atee. ! queue ! interaudiosink channel=audio_cam1_mirror demux. ! video/x-raw,format=I420,width=800,height=450,framerate=25/1 ! queue ! tee name=vtee vtee. ! queue ! intervideosink channel=video_cam1_mixer vtee. ! queue ! intervideosink channel=video_cam1_mirror """) self.sink = Gst.parse_launch(""" interaudiosrc channel=audio_cam1_mirror ! audio/x-raw,format=S16LE,channels=2,layout=interleaved,rate=48000,channel-mask=(bitmask)0x3 ! queue ! mux. intervideosrc channel=video_cam1_mirror ! video/x-raw,format=I420,width=800,height=450,framerate=25/1 ! queue ! mux. matroskamux name=mux streamable=true writing-app=Voctomix-AVRawOutput ! tcpserversink port=11000 """) def run(self): self.src.set_state(Gst.State.PLAYING) self.sink.set_state(Gst.State.PLAYING) self.mainloop.run() example = Example() example.run()