簡體   English   中英

為什么我的pyqt pygst(python gstreamer)代碼渲染不可靠?

[英]Why does my pyqt pygst (python gstreamer) code render unreliably?

TLDR:我正在使用PyQt並將pygst渲染嵌入到窗口中。 當我將所有系統移至Ubuntu 16.04(我認為是14)時,Qt應用程序中的pygst渲染不再可靠運行。 根據系統的不同,我會得到一個空白窗口或看起來像未初始化的內存緩沖區渲染圖。

例如,該代碼在我的Carbon X1(使用nvidia驅動程序)上渲染代碼源的頻率更高,但僅在我使用nouveau視頻驅動程序的情況下才在T61P上運行,並且不是很可靠。 T61P不能與nvidia驅動程序一起使用。

原來的測試代碼是pygst 0.1 嘗試移植到pygst 1.0,但似乎沒有什么不同。 該線程建議添加隊列。 我嘗試添加一些,但是沒有明顯的區別。 但是該線程也沒有給出非常具體的(或自信的)建議,因此我不會打折扣,因為我不知道在哪里添加它們。

如鏈接示例中所述,一個有趣的實驗是延遲player.set_state(PLAYING)或交換QMainWindow.show()與player.set_state(PLAYING)的順序會影響可靠性。

編輯:我想我已經解決了! 或至少事情像以前一樣運作良好。 觀察:在我的一個系統上,將ssh -X'移至我的小獵犬黑(BBB)並運行LinuxCNC GUI(使用OpenGL在ssh上渲染)后,問題變得更加嚴重。 回憶起來,記得我所測試的T61 BBB使用libgl1-mesa-swx11(軟件OpenGL渲染)來嘗試解決Ubuntu 16.04 nvidia驅動程序的渲染問題。 但是,似乎BBB軟件OpenGL會以某種方式弄亂T61上的gstreamer,直到T61重新啟動為止。 在這一點上我還沒有一個明確的解決方案,但是我對導致回歸的原因有很深的了解。 T61似乎現在可以在Ubuntu 16.04和Ubuntu 12.04上運行。 我將嘗試接受以下答案,因為盡管它不能解決問題,但確實提供了一些有用的信息。 謝謝!

我認為“不可靠”的做法是不正確的-將疊加視頻繪制到隱藏的窗口最多是行不通的,最壞的情況可能會導致接收器中的錯誤,從而使管道停止。 當它起作用時,是因為種族條件對您有利。

您根本不需要同步消息處理程序; 在啟動管道之前,只顯示()您的窗口並在接收器上設置窗口句柄即可。

至於一個平台上的故障,請嘗試使用0作為窗口句柄(以便接收器創建自己的窗口)將問題一分為二。 如果它不起作用,則重疊視頻可能根本無法與該驅動程序一起使用。 嘗試qwidgetvideosink。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM