Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #After fuzzing using this code => https://pastebin.com/7MdwVwu2
- #will find the path and use it to display video though this below code
- #with find root password on video stream
- import sys
- import cv2
- from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QDesktopWidget, QComboBox
- from PyQt5.QtCore import QThread, Qt, pyqtSignal, pyqtSlot
- from PyQt5.QtGui import QImage, QPixmap
- class VideoThread(QThread):
- change_pixmap_signal = pyqtSignal(QImage)
- def __init__(self, url, resolution):
- super().__init__()
- self.url = url
- self.resolution = resolution
- self._run_flag = True
- def run(self):
- cap = cv2.VideoCapture(self.url)
- # Set capture parameters for the selected resolution
- cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('H', '2', '6', '4'))
- cap.set(cv2.CAP_PROP_FRAME_WIDTH, self.resolution[0])
- cap.set(cv2.CAP_PROP_FRAME_HEIGHT, self.resolution[1])
- while self._run_flag:
- ret, cv_img = cap.read()
- if ret:
- rgb_image = cv2.cvtColor(cv_img, cv2.COLOR_BGR2RGB)
- h, w, ch = rgb_image.shape
- bytes_per_line = ch * w
- convert_to_qt_format = QImage(rgb_image.data, w, h, bytes_per_line, QImage.Format_RGB888)
- self.change_pixmap_signal.emit(convert_to_qt_format)
- cap.release()
- def stop(self):
- self._run_flag = False
- self.wait()
- class App(QWidget):
- def __init__(self):
- super().__init__()
- self.setWindowTitle("Ultra HD RTSP Player")
- self.resolutions = {
- "1080p (1920x1080)": (1920, 1080),
- "4K (3840x2160)": (3840, 2160),
- "8K (7680x4320)": (7680, 4320)
- }
- self.current_resolution = self.resolutions["4K (3840x2160)"] # Default to 4K
- self.init_ui()
- def init_ui(self):
- self.image_label = QLabel(self)
- self.image_label.resize(*self.current_resolution)
- self.resolution_combo = QComboBox(self)
- self.resolution_combo.addItems(self.resolutions.keys())
- self.resolution_combo.setCurrentText("4K (3840x2160)")
- self.resolution_combo.currentTextChanged.connect(self.change_resolution)
- vbox = QVBoxLayout()
- vbox.addWidget(self.resolution_combo)
- vbox.addWidget(self.image_label)
- self.setLayout(vbox)
- self.thread = VideoThread("rtsp://127.0.0.1:554/mpeg4", self.current_resolution)
- self.thread.change_pixmap_signal.connect(self.update_image)
- self.thread.start()
- self.center_window()
- def center_window(self):
- qtRectangle = self.frameGeometry()
- centerPoint = QDesktopWidget().availableGeometry().center()
- qtRectangle.moveCenter(centerPoint)
- self.move(qtRectangle.topLeft())
- @pyqtSlot(QImage)
- def update_image(self, qt_img):
- scaled_img = qt_img.scaled(self.image_label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
- self.image_label.setPixmap(QPixmap.fromImage(scaled_img))
- def change_resolution(self, resolution_text):
- self.current_resolution = self.resolutions[resolution_text]
- self.image_label.resize(*self.current_resolution)
- self.thread.stop()
- self.thread = VideoThread("rtsp://127.0.0.1:554/mpeg4", self.current_resolution)
- self.thread.change_pixmap_signal.connect(self.update_image)
- self.thread.start()
- self.center_window()
- def closeEvent(self, event):
- self.thread.stop()
- event.accept()
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- a = App()
- a.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement