Отображение текста поверх VL C Вывод видео с помощью Python / PyQt5 - PullRequest
0 голосов
/ 03 августа 2020

Интересно, как я могу отображать текст на моем видеовыходе 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_())

1 Ответ

0 голосов
/ 03 августа 2020

libvl c имеет функцию для этого, см. https://github.com/oaubert/python-vlc/blob/d64c2e84093e1b60b45d8cbb84a53bc5608a1f15/generator/templates/footer.py#L180

player.video_set_marquee_string
...