Qt - ซ้อนทับ QGraphicsView บนวิดีโอ vlc

ฉันมีปัญหาในการใช้โปรแกรมเล่น VLC กับโปรเจ็กต์ของฉัน ฉันต้องการวิดีโอซ้อนทับด้วย QgraphicsView (โดยทั่วไปคือแคนวาส) ดังนั้นฉันจึงสามารถวาดสิ่งต่าง ๆ ได้ ฉันพยายามทำเช่นนี้:

  1. ชี้ตัวชี้ winId ไปที่ QgraphicsView วิดีโอแสดงผลได้ดี แต่แสดงผลที่ด้านบนของวัตถุ ดังนั้นรายการกราฟิกของฉันจึงอยู่ภายใต้เลเยอร์วิดีโอ => ล้มเหลว
  2. สร้างออบเจ็กต์ QGraphics ใหม่ในฐานะลูกของออบเจ็กต์ QGraphics หลักของฉัน จากนั้นเรนเดอร์วิดีโอให้กับลูกนี้ ผลลัพธ์ก็เหมือนกับข้างบน => ล้มเหลว
  3. ซ้อนทับ QWidget ด้วยวิดีโอที่เรนเดอร์ด้วย QGraphicsView ของฉัน (ตำแหน่งและขนาดเดียวกัน) ฉันได้ตั้งค่าพื้นหลังโปร่งใสเพื่อให้เห็นวิดเจ็ตที่ซ้อนทับได้ แต่วิดีโอภายใต้เลเยอร์นี้กลับไม่แสดงผล ฉันยังคงเป็นสีขาวแต่ฉันได้ยินเสียงมันเล่น => ล้มเหลว

ฉันได้อ่านฟอรั่มนี้ว่ามีคนแยกทุกเฟรมและตั้งค่าเป็น pixmap ให้กับวัตถุ ฉันเห็นโค้ดแล้ว แต่จริงๆ แล้วฉันไม่เข้าใจมัน เพราะฉันไม่ใช่ C++ มืออาชีพ :( ฉันกำลังใช้ Python Binding สำหรับ Qt (PySide) และสำหรับ VLC โปรดช่วยด้วย มันรบกวนจิตใจฉันจริงๆ :(

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


person m1lhaus    schedule 27.06.2013    source แหล่งที่มา


คำตอบ (2)


ล่าสุดฉันใช้เครื่องเล่น Phonon ในตัว เป็นไปได้ที่จะเพิ่มวิดเจ็ตวิดีโอ Phonon เป็น GraphicsItem ผ่าน QGraphicsProxyWidget ทำงานได้อย่างมีเสน่ห์ด้วยชุดตัวแปลงสัญญาณ K-Lite บนพื้นหลัง Windows

person m1lhaus    schedule 06.07.2013

ฉันรู้ว่าคำถามนี้ผ่านมาระยะหนึ่งแล้ว แต่ฉันเพิ่งเจอคำถามนี้ในขณะที่พยายามคิดออกในวันนี้และคิดว่าฉันจะหาวิธีแก้ปัญหา

ความพยายามครั้งที่ 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");
person chocolossus    schedule 31.01.2014
comment
ฉันไม่สามารถทำให้มันทำงานได้อย่างถูกต้อง ยังไม่มีการเรนเดอร์ - person m1lhaus; 14.10.2014