Vlc无法在PyQt5中使用无框架窗口和透明/半透明背景

问题描述

我正在制作一个窗口,可播放带有vlc的视频。 这是我的代码

from PyQt5 import QtWidgets,QtCore,QtGui
import vlc
class Player(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.resize(600,400)
        self.mainframe=QtWidgets.qframe(self)
        self.setCentralWidget(self.mainframe)
        self.mainframe.setStyleSheet("background:grey;border-radius:15px;")
        self.videoframe=QtWidgets.qframe(self.mainframe)
        self.videoframe.setGeometry(10,10,580,380)
        self.videoframe.setStyleSheet("background:#333333")
        '''
        If i want to set transparent background and frameless window,video wont display only audio plays
        '''
        # self.setwindowFlags(
        #           QtCore.Qt.FramelessWindowHint 
        #         | QtCore.Qt.WindowStaysOnTopHint )
        # self.setAttribute(QtCore.Qt.WA_TranslucentBackground,True)
        self.instance=vlc.Instance()
        self.player = self.instance.media_player_new()
        self.player.set_hwnd(int(self.videoframe.winId()))
        media = self.instance.media_new('C:/Users/mishra/Downloads/Video/despacito.mp4')
        media.parse()
        self.player.set_media(media)
        self.player.play()
        
        
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = Player()
    window.show()
    sys.exit(app.exec_())

如果设置了,我只能听到音频播放而不能听到视频

self.setwindowFlags(
             QtCore.Qt.FramelessWindowHint 
            | QtCore.Qt.WindowStaysOnTopHint )
self.setAttribute(QtCore.Qt.WA_TranslucentBackground,True)

它还会引发很多错误,但该错误不会影响。我得到的错误

[00757578] mmdevice audio output error: cannot initialize COM (error 0x80010106)
[02620b80] mmdevice audio output error: cannot initialize COM (error 0x80010106)
[043ccc28] direct3d11 vout display error: Could not Create the D3D11 device. (hr=0x80004001)
[043ccc28] direct3d11 vout display error: Direct3D11 Could not be opened
[043ccc28] direct3d11 vout display error: SetThumbNailClip Failed: 0x800706f4
[025fc198] d3d11va generic error: D3D11CreateDevice Failed. (hr=0x80004001)
[025fc198] d3d11va generic error: Failed to create device
[043ccc28] direct3d9 vout display error: SetThumbNailClip Failed: 0x800706f4
[04384af8] direct3d11 vout display error: Could not Create the D3D11 device. (hr=0x80004001)
[04384af8] direct3d11 vout display error: Direct3D11 Could not be opened
[04384af8] direct3d11 vout display error: SetThumbNailClip Failed: 0x800706f4
[025fbe38] dxva2 generic error: FindVideoServiceConversion Failed
[04384af8] direct3d9 vout display error: SetThumbNailClip Failed: 0x800706f4
[04384af8] direct3d11 vout display error: Could not Create the D3D11 device. (hr=0x80004001)
[04384af8] direct3d11 vout display error: Direct3D11 Could not be opened
[04384af8] direct3d11 vout display error: SetThumbNailClip Failed: 0x800706f4

有人知道如何解决吗?

解决方法

这也是python-VLC github上的问题 https://github.com/oaubert/python-vlc/issues/155

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...