Интересно, как я могу отображать текст на моем видеовыходе VL C. Каждый виджет, который я помещаю поверх виджета поверхности видео, исчезает, как только видео воспроизводится. Например, я использую QFrame в качестве поверхности для видео и помещаю Qlabel внутри этого QFrame. Текст появляется поверх кадра, но на видео его нет. В следующем MRE, как только я снимаю отметку с self.Player.play()
, видео воспроизводится, а текст исчезает.
import sys
import vlc
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QWidget,QApplication,QMainWindow,QFrame,QLabel,QVBoxLayout
class Player(QMainWindow):
def __init__(self, parent=None):
super(Player,self).__init__()
self.Init_Gui()
# self.Player.play()
def Init_Gui(self):
centralWidget = QWidget()
mainlayout = QVBoxLayout(centralWidget)
self.resize(640,480)
self.setCentralWidget(centralWidget)
self.VideoSurface = QFrame()
self.VideoSurface.setStyleSheet('background-color: black')
self.OSDLabel = QLabel(self.VideoSurface)
self.OSDLabel.setStyleSheet('color: white')
font = QFont()
font.setPointSize(18)
self.OSDLabel.setFont(font)
self.OSDLabel.setText('Testing ....... Testing..... Testing.....')
mainlayout.addWidget(self.VideoSurface)
self.Instance = vlc.Instance()
self.Player = self.Instance.media_player_new('e:/media/vid1.mp4')
self.Player.set_hwnd(self.VideoSurface.winId())
self.show()
if __name__=='__main__':
MyApp = QApplication(sys.argv)
MyGui = Player()
sys.exit(MyApp.exec_())