QtMultimedia는 멀티미디어 콘텐츠들을 재생시키기 위한 필수적인 도구이다.
pyqt가 깔려있지 않으면 이 부분을 임포트 해 와야 한다.
import QtMultimedia 5.15
만약 c++ 사용자라면 아래와 같은 코드를 헤더에 추가해줘야 한다.
#include <QtMultimedia>
#include <QtMultimediaWidgets>
파이큐티 사용자라면 멀티미디어를 임포트 해 준다.
import QtMultimedia
소스코드
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtMultimedia import *
from PyQt5.QtMultimediaWidgets import *
import time
class VideoPlayer(QWidget):
def __init__(self, parent=None):
super(VideoPlayer, self).__init__(parent)
self.setWindowFlag(Qt.FramelessWindowHint)
self.showFullScreen()
videoItem = QGraphicsVideoItem()
# videoItem.setWindowFlag(Qt.FramelessWindowHint)
videoItem.setSize(QSizeF(self.width(), self.height()))
scene = QGraphicsScene(self)
scene.addItem(videoItem)
graphicsView = QGraphicsView(scene)
layout = QVBoxLayout()
layout.addWidget(graphicsView)
self.setLayout(layout)
self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
self.mediaPlayer.setVideoOutput(videoItem)
# stateChanged 시그널 연결
self.mediaPlayer.stateChanged.connect(self.handleStateChanged)
def keyPressEvent(self, e):
"""단축키"""
print('state: ' + str(self.mediaPlayer.state()))
print('mediaStatus: ' + str(self.mediaPlayer.mediaStatus()))
print('error: ' + str(self.mediaPlayer.error()))
if e.key() == Qt.Key_L: # L키는 로드
print('loading')
self.load()
if e.key() == Qt.Key_P: # P키는 플레잉
print('playing')
self.mediaPlayer.play()
if e.key() == Qt.Key_Q: # Q키 누르면 종료
self.close()
else:
return
def load(self):
"""wmv 파일 로드하기"""
local = QUrl.fromLocalFile('./boki_prologue.wmv')
media = QMediaContent(local)
self.mediaPlayer.setMedia(media)
def handleStateChanged(self, state):
"""비디오가 종료되면 화면도 꺼지게 하는 함수"""
if state == QMediaPlayer.StoppedState:
self.close()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
player = VideoPlayer()
player.show()
sys.exit(app.exec_())
L을 누르면 영상 로드,
P를 누르면 영상 실행,
Q를 누르면 영상이 종료된다.
비디오가 종료되면 화면도 종료되게 만들었다.
참고링크1: https://doc.qt.io/qt-5/qtmultimedia-index.html
참고링크2: https://stackoverflow.com/questions/42801979/error-using-qmediaplayer-with-pyqt5-on-windows
'개발공부 > Pyqt 파이큐티' 카테고리의 다른 글
[PyQt] QLineEdit Enter Key Event - 라인에딧 엔터 눌렀을 때 함수연결 (0) | 2023.07.12 |
---|---|
[PyQt] Scroll Area 공부하기 (0) | 2023.05.09 |
[PyQt] 로또 화면 만들어보기 (0) | 2023.05.08 |
[PyQt] 파이큐티 QTableWidget 공부하기 (0) | 2023.05.07 |
파이큐티공부_1 로그인창 (0) | 2023.05.07 |