[PyQT5] Opencv를 이용하여 Pyqt5 Youtube view 만들기 (How to watch youtube in pyqt5 - 2) [6]

2021. 6. 28. 08:34GUI Programming/PyQT5 (GUI Programming)

반응형

[ 우선 따라해보는 Python ]

 

https://github.com/Mr-DooSun/pyqt5-gui/tree/master/ex4_youtube/ex2_opencv_youtube

 

Mr-DooSun/pyqt5-gui

Contribute to Mr-DooSun/pyqt5-gui development by creating an account on GitHub.

github.com

Pyqt5 에서 youtube 시청하는 방법 2번째를 가르쳐드리겠습니다

이번에는 opencv를 이용하여 실시간으로 프레임을 가져온뒤 pyqt5 label에 띄우는 형식으로 진행하겠습니다

 

※ 시작하기에 앞서 이 방법은 소리 재생이 안됩니다.

 

우선 pafy라는 모듈과 opencv를 설치해줍니다

pip install pafy
pip install opencv-python​

그리고 아래와 같은 모듈들을 import 해줍니다

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QPixmap, QImage     
import pafy
import cv2
from time import sleep
import threading

그리곤 video_viewer_label 이라는 이름으로 label을 추가해준뒤

 

아래 함수를 이용할 경우 youtube video를 볼 수 있습니다.

def Video_to_frame(self, MainWindow):
        url = "https://www.youtube.com/watch?v=t67_zAg5vvI" #youtube video url
        vPafy = pafy.new(url)

        video_length=vPafy.length/60
        print(video_length/60)
    
        play = vPafy.getbest(preftype="mp4")
            
        cap = cv2.VideoCapture(play.url)

        while True:
            self.ret, self.frame = cap.read()
            if self.ret:
                self.rgbImage = cv2.cvtColor(self.frame, cv2.COLOR_BGR2RGB)
                self.convertToQtFormat = QImage(self.rgbImage.data, self.rgbImage.shape[1], self.rgbImage.shape[0], QImage.Format_RGB888)
                   
                self.pixmap = QPixmap(self.convertToQtFormat)
                self.p = self.pixmap.scaled(400, 225, QtCore.Qt.IgnoreAspectRatio)

                self.video_viewer_label.setPixmap(self.p)
                self.video_viewer_label.update()

                sleep(0.03) #Youtube 영상 1프레임당 0.03초

            else :
                break

        cap.release()
        cv2.destroyAllWindows()

 

[ 결과 ]

https://www.youtube.com/watch?v=t67_zAg5vvI

이상 포스팅을 마치도록하겠습니다

 

[ 완성된 코드 ]

 

https://github.com/Mr-DooSun/pyqt5-gui/tree/master/ex4_youtube/ex2_opencv_youtube

 

Mr-DooSun/pyqt5-gui

Contribute to Mr-DooSun/pyqt5-gui development by creating an account on GitHub.

github.com

반응형