2013-06-27 111 views
1

我有一些麻煩實施VLC播放器到我的項目。我需要用QgraphicsView(basicaly canvas)疊加視頻,這樣我才能夠繪製東西。我試過這樣做:Qt - 覆蓋QGraphicsView通過vlc視頻

  1. 指向QgraphicsView的winId指針。視頻呈現很好,但它呈現在對象之上,所以我的圖形項目在視頻圖層下。 =>失敗
  2. 創建新的QGraphics對象作爲我的主QGraphics對象的子對象,然後將視頻呈現給此子對象。結果與上面相同。 =>失敗
  3. 使用我的QGraphicsView(相同的位置和大小)覆蓋QWidget和渲染視頻。我已經設置了透明背景,所以我可以看到覆蓋的小部件,但是這個層下的視頻不會呈現。我保持白色,但我可以聽到它的演奏。 =>失敗

我讀過在這個論壇上,有人提取每一幀,並將其設置爲像素圖的對象。我看到了代碼,但是很奇怪,我不明白,因爲我不是C++專業人員:(我使用Python綁定爲Qt(PySide)和VLC。請幫忙,它真的困擾我:(

http://forum.videolan.org/viewtopic.php?f=32&t=68816&p=228645

回答

1

最近,我一直用集成聲子的球員。這是更多鈔票來增加聲子視頻widget作爲GraphicsItem通QGraphicsProxyWidget。工程就像在Windows背景K-精簡版解碼包魅力。

0

我知道這個問題是一個雖然回來,但我只是跑過這一邊,試圖找出它今天和身材我會提出我的解決方案。

幾乎你的第三次嘗試是正確的,但你也必須使你使用透明的QGraphicsView,因爲這是你看到的白色。您只需確保視圖使用setGeometry手動跟蹤窗口並設置好即可。

#assuming you're inside a main window that is self 
scene = QGraphicsScene() 
scene.setBackgroundBrush(QBrush(QColor(255, 0,0,90))) #creates a semitransparent red over VLC 

view = QGraphicsView(self) 
view.setScene(self.scene) 
view.setGeometry(0,0,self.width(),self.height()) 

self.view.setStyleSheet("background: transparent"); 
+1

我無法得到它的工作的權利。仍然沒有渲染。 – m1lhaus