为什么pyqt-pygst(python-gstreamer)代码呈现不可靠?

2024-10-06 13:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

TLDR:我使用PyQt并在窗口中嵌入pygst呈现。当我把我所有的系统移到Ubuntu 16.04(我想是从14开始?)Qt应用程序中的pygst呈现不再可靠地工作。根据系统的不同,我得到的要么是一个空白窗口,要么是看起来像未初始化的内存缓冲区呈现。在

例如,代码在我的carbon-X1(使用nvidia驱动程序)上更常用于呈现测试源代码,但只有在我使用nouveau视频驱动程序的情况下才能在T61P上运行,而且不太可靠。T61P从不与nvidia驱动程序一起工作。在

{a1}我的。我tried porting to pygst 1.0但似乎没什么区别。This thread建议添加队列。我试着添加一些,但没有发现任何明显的区别。但是这个帖子也没有给出非常具体(或自信)的建议,所以我不会打折扣,因为我不知道该在哪里添加它们。在

一个有趣的实验,正如链接的例子所指出的,是延迟player.set_状态(演奏)或调换QMainWindow.show()与player.set_状态(播放)影响可靠性。在

编辑:我想我已经解决了!或者至少事情和以前一样好。观察:在我的一个系统上,对beagleboneblack(BBB)进行ssh-X并运行LinuxCNC GUI(使用OpenGL在ssh上呈现)之后,问题会严重得多。回想起来,记得我测试的T61 BBB有libgl1-mesa-swx11(软件OpenGL渲染)试图解决ubuntu16.04nvidia驱动程序的渲染问题。然而,BBB软件OpenGL似乎在某种程度上扰乱了T61上的gstreamer,直到T61重新启动。在这一点上,我没有一个明确的解决办法,但我确实有一个坚实的理解是什么导致了倒退。T61现在似乎可以在ubuntu16.04和ubuntu12.04上运行。我将尝试接受下面的答案,虽然它没有解决问题,但它确实提供了一些有用的信息。谢谢!在


Tags: 软件状态系统驱动程序ssh建议nvidiaopengl
1条回答
网友
1楼 · 发布于 2024-10-06 13:24:24

我认为“不可靠”的一个根本是不正确的-在一个隐藏的窗口上绘制覆盖视频充其量是行不通的,最坏的情况是可能会导致水槽出错,从而停止管道。当它真的起作用时,那是因为比赛条件对你有利。在

您根本不需要sync消息处理程序;只需show()您的窗口,并在启动管道之前在接收器上设置窗口句柄。在

对于一个平台上的失败,尝试使用0作为窗口句柄(这样sink会创建自己的)来平分问题。如果它不起作用,那么覆盖视频可能根本不适用于该驱动程序。试试qwidgetvideosink。在

相关问题 更多 >