Я разрабатываю видеочат, используя gst и python. где я хотел бы просматривать веб-камеру конечного пользователя, а также хочу просматривать свою собственную веб-камеру в одном окне gtk (аналогично видеочату сочувствия).
для этого я использовал объект gst.Tee и создал 2 очереди, одна из которых свяжет результат с локальным окном gtk, а вторая очередь свяжет тот же видеопоток с объектом сеанса.
gst.Tee выполнили задачу, но также уменьшили скорость видеочата, и видео идет позже, чем аудио. (Я использовал другой поток для аудиосессии)
вот, фрагмент кода:
self.pipeline = gst.Pipeline()
bus = self.pipeline.get_bus()
bus.add_signal_watch()
bus.connect('message', self._on_gst_message)
self.src_bin = gst.element_factory_make("autovideosrc", "src")
autovideosinkLocal = gst.element_factory_make("autovideosink", "autovideosinkLocal")
tee = gst.element_factory_make('tee', "tee")
queueLocal = gst.element_factory_make("queue", "queueLocal")
queueSend = gst.element_factory_make("queue", "queueSend")
self.pipeline.add(self.src_bin, tee, queueLocal, autovideosinkLocal, queueSend)
gst.element_link_many(self.src_bin, tee)
tee.link(queueLocal)
queueLocal.link(autovideosinkLocal)
tee.link(queueSend)
queueSend.get_pad('src').link(self.p2psession.get_property('sink-pad'))
self.pipeline.set_state(gst.STATE_PLAYING)
Как бы я ускорил видеочат (например, если бы я использовал один приемник и отображал только видео получателя, он отлично работал)?
Есть ли другой способ сделать то же самое?
Спасибо!