我正在使用 gst 和 python 开发视频聊天。在哪里,我想查看最终用户的网络摄像头,也想在一个 gtk 窗口中查看我自己的网络摄像头(类似于 empathy 视频聊天)。
为此,我使用了 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)
我将如何加快视频聊天(例如,如果我使用单个接收器并仅显示接受者的视频,效果会很好)?
还有其他方法可以做到这一点吗?
谢谢!