1

プロジェクトに VLC プレーヤーを実装するのに問題があります。QgraphicsView (基本的にはキャンバス) を使用したオーバーレイ ビデオが必要なので、描画できるようになります。私はこのようにそれをやろうとしました:

  1. QgraphicsView への winId ポインターをポイントします。ビデオは問題なくレンダリングされますが、オブジェクトの上にレンダリングされるため、グラフィック アイテムはビデオ レイヤーの下にあります。=>失敗
  2. メインの QGraphics オブジェクトの子として新しい QGraphics オブジェクトを作成し、この子にビデオをレンダリングします。結果は上記と同じです。=>失敗
  3. 私のQGraphicsView(同じ位置とサイズ)でレンダリングされたビデオでQWidgetをオーバーレイします。オーバーレイされたウィジェットが見えるように背景を透明に設定しましたが、このレイヤーの下のビデオはレンダリングされません。私は白いままですが、その演奏が聞こえます。=>失敗

このフォーラムで、誰かがすべてのフレームを抽出し、それをピックスマップとしてオブジェクトに設定することを読みました。私はコードを見ましたが、残念なことに、私はC++の専門家ではないので、わかりません:( Qt(PySide)とVLCにPythonバインディングを使用しています。助けてください、本当に気になります:(

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

4

2 に答える 2

0

私はこの質問がしばらく前にあったことを知っていますが、今日それを理解しようとしているときにこれに出くわし、解決策を提示したいと思いました。

3回目の試みはほとんど正しかったのですが、使用している 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");
于 2014-01-31T09:57:38.997 に答える