def __init__(self, parent=None): super(VideoPlayer, self).__init__(parent) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) #self.mediaPlayer.setMinmumSize(QtCore.QSize(445, 225)) btnSize = QSize(16, 16) videoWidget = QVideoWidget() videoWidget.setMinimumSize(QtCore.QSize(445, 225)) openButton = QPushButton("Open Video") openButton.setToolTip("Open Video File") openButton.setStatusTip("Open Video File") openButton.setFixedHeight(24) openButton.setIconSize(btnSize) openButton.setFont(QFont("Noto Sans", 8)) openButton.setIcon( QIcon.fromTheme("document-open", QIcon("D:/_Qt/img/open.png"))) openButton.clicked.connect(self.abrir) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setFixedHeight(24) self.playButton.setIconSize(btnSize) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.statusBar = QStatusBar() self.statusBar.setFont(QFont("Noto Sans", 7)) self.statusBar.setFixedHeight(14) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) #controlLayout.addWidget(openButton) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() #layout.setMinmumSize(QtCore.QSize(445, 225)) layout.addWidget(videoWidget) layout.addLayout(controlLayout) layout.addWidget(self.statusBar) self.setLayout(layout) self.mediaPlayer.setVideoOutput(videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) self.statusBar.showMessage("Ready")
class App(QWidget): def __init__(self): super().__init__() self.title = 'Main' self.left = 10 self.top = 10 self.width = 640 self.height = 480 self.setWindowTitle(self.title) # self.setGeometry(self.left, self.top, self.width, self.height) # Create video widget self.videoWidget = QVideoWidget() self.videoWidget.aspectRatioMode = Qt.KeepAspectRatio self.videoWidget.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred) self.videoWidget.setMinimumSize(320, 320) # Create Media player self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.mediaPlayer.setVideoOutput(self.videoWidget) # self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(os.path.abspath('sample2.mov')))) # Create media player bridge self.mediaPlayerBridge = MediaPlayerBridge(self.mediaPlayer) # Create Web View self.webView = QtWebEngineWidgets.QWebEngineView() self.webView.setContextMenuPolicy( Qt.PreventContextMenu) # TODO: test NoContextMenu # self.webView.setWindowFlags(Qt.FramelessWindowHint) # self.webView.setAttribute(Qt.WA_TranslucentBackground, True) self.page = WebRTCPageView() self.page.setBackgroundColor(Qt.transparent) self.page.objects = {"mediaPlayerBridge": self.mediaPlayerBridge} self.page.profile().clearHttpCache() self.webView.setPage(self.page) # Create layout layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.addWidget(self.videoWidget) layout.addWidget(self.webView) self.setLayout(layout) self.resize(640, 800) self.show() self.mediaPlayer.play()
class Template(QWidget): def __init__(self): super().__init__() self.player = QMediaPlayer() self.slider = SongSlider() self.player.mediaStatusChanged.connect(self.set_slider) # self.playlist = QMediaPlaylist() self.playlist = QVideoWidget() # self.player.setPlaylist(self.playlist) self.player.setVideoOutput(self.playlist) btn = QPushButton('Open') btn.clicked.connect(self.load_song) btnNext = QPushButton('Next frame') btnNext.clicked.connect(self.next_frame) grid = QGridLayout(self) grid.addWidget(self.playlist, 0, 0) grid.addWidget(self.slider, 1, 0) grid.addWidget(btn, 2, 0, Qt.AlignLeft) grid.addWidget(btnNext, 2, 1, Qt.AlignLeft) self.playlist.setMinimumSize(QSize(431, 391)) def set_slider(self): if self.player.mediaStatus() == QMediaPlayer.BufferedMedia: self.player.positionChanged.connect(self.slider.setPos) self.slider.moved[int].connect(self.player.setPosition) self.slider.setRange(self.player.duration()) print('set slider ' + str(self.slider.moved)) def load_song(self): file, _ = QFileDialog.getOpenFileUrl(self, 'Choose song') if file: # self.playlist.addMedia(QMediaContent(file)) self.player.setMedia(QMediaContent(file)) self.player.play() print('load song' + str(self.slider.moved)) def next_frame( self ): #################################################################3# if self.player.mediaStatus() == QMediaPlayer.BufferedMedia: self.player.positionChanged.connect(self.slider.setPos) self.slider.moved[int].connect(self.player.setPosition) self.slider.setRange(self.player.duration()) print('set slider ' + str(self.slider.moved))
class Ui_MainWindow_loading(object): def setupUi(self, mainWindow): mainWindow.setObjectName("mainWindow") mainWindow.resize(960, 540) mainWindow.setCursor(QtGui.QCursor(QtCore.Qt.BusyCursor)) self.centralwidget = QtWidgets.QWidget(mainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.widget = QVideoWidget(self.centralwidget) self.widget.setEnabled(True) self.widget.setMinimumSize(QtCore.QSize(0, 0)) self.widget.setObjectName("widget") self.verticalLayout.addWidget(self.widget) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.progressBar = QtWidgets.QProgressBar(self.centralwidget) self.progressBar.setMinimumSize(QtCore.QSize(0, 0)) self.progressBar.setProperty("value", 0) self.progressBar.setObjectName("progressBar") self.verticalLayout.addWidget(self.progressBar) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem1) self.pushButton = QtWidgets.QPushButton(self.centralwidget) font = QtGui.QFont() font.setFamily("Elephant") font.setPointSize(44) self.pushButton.setFont(font) self.pushButton.setObjectName("pushButton") self.verticalLayout.addWidget(self.pushButton) mainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(mainWindow) QtCore.QMetaObject.connectSlotsByName(mainWindow) def retranslateUi(self, mainWindow): _translate = QtCore.QCoreApplication.translate mainWindow.setWindowTitle(_translate("mainWindow", "Loading")) self.pushButton.setText(_translate("mainWindow", "BEST PRODUCTIONS"))
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1409, 1146) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout_3.setObjectName("verticalLayout_3") self.author_label_2 = QtWidgets.QLabel(self.centralwidget) self.author_label_2.setMaximumSize(QtCore.QSize(16777215, 50)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(20) self.author_label_2.setFont(font) self.author_label_2.setAlignment(QtCore.Qt.AlignCenter) self.author_label_2.setObjectName("author_label_2") self.verticalLayout_3.addWidget(self.author_label_2) self.horizontalLayout_7 = QtWidgets.QHBoxLayout() self.horizontalLayout_7.setObjectName("horizontalLayout_7") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_7.addItem(spacerItem) self.author_label = QtWidgets.QLabel(self.centralwidget) self.author_label.setMinimumSize(QtCore.QSize(200, 30)) self.author_label.setMaximumSize(QtCore.QSize(16777215, 30)) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(-1) font.setBold(True) font.setWeight(75) self.author_label.setFont(font) self.author_label.setStyleSheet( "QStackedWidget, QLabel, QPushButton, QRadioButton, QCheckBox, \n" "QGroupBox, QStatusBar, QToolButton, QComboBox, QDialog {\n" " background-color: #222222;\n" " color: #BBBBBB;\n" " font-family: \"Calibri\";\n" " font-size:13px;\n" " font-weight:bold;\n" "}") self.author_label.setAlignment(QtCore.Qt.AlignCenter) self.author_label.setObjectName("author_label") self.horizontalLayout_7.addWidget(self.author_label) self.verticalLayout_3.addLayout(self.horizontalLayout_7) self.splitter = QtWidgets.QSplitter(self.centralwidget) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName("splitter") self.groupBox = QtWidgets.QGroupBox(self.splitter) self.groupBox.setMinimumSize(QtCore.QSize(500, 0)) self.groupBox.setMaximumSize(QtCore.QSize(1300, 16777215)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.groupBox.setFont(font) self.groupBox.setAlignment(QtCore.Qt.AlignCenter) self.groupBox.setObjectName("groupBox") self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox) self.verticalLayout.setObjectName("verticalLayout") self.input_video_widget = QVideoWidget(self.groupBox) self.input_video_widget.setMinimumSize(QtCore.QSize(100, 100)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.input_video_widget.setFont(font) self.input_video_widget.setObjectName("input_video_widget") self.verticalLayout.addWidget(self.input_video_widget) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label = QtWidgets.QLabel(self.groupBox) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.label.setFont(font) self.label.setObjectName("label") self.horizontalLayout_2.addWidget(self.label) self.predict_progressBar = QtWidgets.QProgressBar(self.groupBox) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.predict_progressBar.setFont(font) self.predict_progressBar.setProperty("value", 0) self.predict_progressBar.setObjectName("predict_progressBar") self.horizontalLayout_2.addWidget(self.predict_progressBar) self.fps_label = QtWidgets.QLabel(self.groupBox) self.fps_label.setMinimumSize(QtCore.QSize(0, 0)) self.fps_label.setMaximumSize(QtCore.QSize(16777215, 20)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.fps_label.setFont(font) self.fps_label.setObjectName("fps_label") self.horizontalLayout_2.addWidget(self.fps_label) self.verticalLayout.addLayout(self.horizontalLayout_2) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.import_media_pushButton = QtWidgets.QPushButton(self.groupBox) self.import_media_pushButton.setMinimumSize(QtCore.QSize(0, 25)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.import_media_pushButton.setFont(font) self.import_media_pushButton.setStyleSheet( "QPushButton{\n" " background-color:#2828FF;\n" " color:#ffffff;\n" " border-radius: 5px;\n" "}\n" "\n" "QPushButton:hover{\n" " color:#FFFFFF;\n" " background:#9393FF;\n" "}\n" "") self.import_media_pushButton.setObjectName("import_media_pushButton") self.horizontalLayout.addWidget(self.import_media_pushButton) self.start_predict_pushButton = QtWidgets.QPushButton(self.groupBox) self.start_predict_pushButton.setMinimumSize(QtCore.QSize(0, 25)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.start_predict_pushButton.setFont(font) self.start_predict_pushButton.setStyleSheet( "QPushButton{\n" " background-color:#16A085;\n" " color:#ffffff;\n" " border-radius: 5px;\n" "}\n" "\n" "QPushButton:hover{\n" " color:#FFFFFF;\n" " background:#2EE1C1;\n" "}\n" "") self.start_predict_pushButton.setObjectName("start_predict_pushButton") self.horizontalLayout.addWidget(self.start_predict_pushButton) self.verticalLayout.addLayout(self.horizontalLayout) self.groupBox_2 = QtWidgets.QGroupBox(self.splitter) self.groupBox_2.setMinimumSize(QtCore.QSize(500, 0)) self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.groupBox_2.setFont(font) self.groupBox_2.setAlignment(QtCore.Qt.AlignCenter) self.groupBox_2.setObjectName("groupBox_2") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_2) self.verticalLayout_2.setObjectName("verticalLayout_2") self.output_video_widget = QVideoWidget(self.groupBox_2) self.output_video_widget.setMinimumSize(QtCore.QSize(100, 100)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.output_video_widget.setFont(font) self.output_video_widget.setObjectName("output_video_widget") self.verticalLayout_2.addWidget(self.output_video_widget) self.open_predict_file_pushButton = QtWidgets.QPushButton( self.groupBox_2) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.open_predict_file_pushButton.setFont(font) self.open_predict_file_pushButton.setObjectName( "open_predict_file_pushButton") self.verticalLayout_2.addWidget(self.open_predict_file_pushButton) self.verticalLayout_3.addWidget(self.splitter) self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_4.addItem(spacerItem1) self.video_horizontalSlider = QtWidgets.QSlider(self.centralwidget) self.video_horizontalSlider.setMaximumSize(QtCore.QSize(16777215, 35)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.video_horizontalSlider.setFont(font) self.video_horizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.video_horizontalSlider.setObjectName("video_horizontalSlider") self.horizontalLayout_4.addWidget(self.video_horizontalSlider) self.video_percent_label = QtWidgets.QLabel(self.centralwidget) self.video_percent_label.setMaximumSize(QtCore.QSize(16777215, 35)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.video_percent_label.setFont(font) self.video_percent_label.setObjectName("video_percent_label") self.horizontalLayout_4.addWidget(self.video_percent_label) spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_4.addItem(spacerItem2) self.verticalLayout_3.addLayout(self.horizontalLayout_4) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") spacerItem3 = QtWidgets.QSpacerItem(40, 25, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem3) self.play_pushButton = QtWidgets.QPushButton(self.centralwidget) self.play_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.play_pushButton.setMaximumSize(QtCore.QSize(16777215, 35)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.play_pushButton.setFont(font) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("icon/play.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.play_pushButton.setIcon(icon) self.play_pushButton.setObjectName("play_pushButton") self.horizontalLayout_3.addWidget(self.play_pushButton) self.pause_pushButton = QtWidgets.QPushButton(self.centralwidget) self.pause_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.pause_pushButton.setMaximumSize(QtCore.QSize(16777215, 35)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.pause_pushButton.setFont(font) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("icon/pause.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pause_pushButton.setIcon(icon1) self.pause_pushButton.setObjectName("pause_pushButton") self.horizontalLayout_3.addWidget(self.pause_pushButton) spacerItem4 = QtWidgets.QSpacerItem(40, 25, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem4) self.verticalLayout_3.addLayout(self.horizontalLayout_3) self.horizontalLayout_5 = QtWidgets.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget) self.groupBox_3.setMaximumSize(QtCore.QSize(16777215, 150)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.groupBox_3.setFont(font) self.groupBox_3.setObjectName("groupBox_3") self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.groupBox_3) self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.predict_info_plainTextEdit = QtWidgets.QPlainTextEdit( self.groupBox_3) self.predict_info_plainTextEdit.setMaximumSize( QtCore.QSize(16777215, 100)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.predict_info_plainTextEdit.setFont(font) self.predict_info_plainTextEdit.setObjectName( "predict_info_plainTextEdit") self.horizontalLayout_6.addWidget(self.predict_info_plainTextEdit) self.horizontalLayout_5.addWidget(self.groupBox_3) self.verticalLayout_3.addLayout(self.horizontalLayout_5) self.gpu_info_chart = QChartView(self.centralwidget) self.gpu_info_chart.setMaximumSize(QtCore.QSize(16777215, 100)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.gpu_info_chart.setFont(font) self.gpu_info_chart.setObjectName("gpu_info_chart") self.verticalLayout_3.addWidget(self.gpu_info_chart) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1409, 23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.author_label_2.setText( _translate("MainWindow", "Intelligent Monitoring System of Construction Site")) self.author_label.setText( _translate("MainWindow", "Product by: HinGwenWoong")) self.groupBox.setTitle(_translate("MainWindow", "Input Media")) self.label.setText(_translate("MainWindow", "Processing:")) self.fps_label.setText(_translate("MainWindow", "(FPS)")) self.import_media_pushButton.setStatusTip( _translate("MainWindow", "Import video to predict")) self.import_media_pushButton.setText(_translate( "MainWindow", "Import")) self.start_predict_pushButton.setStatusTip( _translate("MainWindow", "Predict the vedio")) self.start_predict_pushButton.setText( _translate("MainWindow", "Predict")) self.groupBox_2.setTitle(_translate("MainWindow", "Output Media")) self.open_predict_file_pushButton.setText( _translate("MainWindow", "Open in Browser")) self.video_percent_label.setText(_translate("MainWindow", "0 %")) self.play_pushButton.setText(_translate("MainWindow", "Play")) self.pause_pushButton.setText(_translate("MainWindow", "Pause")) self.groupBox_3.setTitle(_translate("MainWindow", "Predict Info:"))
class VideoPlayer(QWidget): def __init__(self, aPath, parent=None): super(VideoPlayer, self).__init__(parent) self.setAttribute(Qt.WA_NoSystemBackground, True) self.setAcceptDrops(True) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.StreamPlayback) self.mediaPlayer.setVolume(80) self.videoWidget = QVideoWidget(self) self.videoWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.videoWidget.setMinimumSize(QSize(640, 360)) self.lbl = QLineEdit('00:00:00') self.lbl.setReadOnly(True) self.lbl.setFixedWidth(70) self.lbl.setUpdatesEnabled(True) self.lbl.setStyleSheet(stylesheet(self)) self.elbl = QLineEdit('00:00:00') self.elbl.setReadOnly(True) self.elbl.setFixedWidth(70) self.elbl.setUpdatesEnabled(True) self.elbl.setStyleSheet(stylesheet(self)) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setFixedWidth(32) self.playButton.setStyleSheet("background-color: black") self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal, self) self.positionSlider.setStyleSheet(stylesheet(self)) self.positionSlider.setRange(0, 100) self.positionSlider.sliderMoved.connect(self.setPosition) self.positionSlider.sliderMoved.connect(self.handleLabel) self.positionSlider.setSingleStep(2) self.positionSlider.setPageStep(20) self.positionSlider.setAttribute(Qt.WA_TranslucentBackground, True) self.clip = QApplication.clipboard() self.process = QProcess(self) self.process.readyRead.connect(self.dataReady) self.process.finished.connect(self.playFromURL) self.myurl = "" # channel list self.channelList = QListView(self) self.channelList.setMinimumSize(QSize(150, 0)) self.channelList.setMaximumSize(QSize(150, 4000)) self.channelList.setFrameShape(QFrame.Box) self.channelList.setObjectName("channelList") self.channelList.setStyleSheet("background-color: black; color: #585858;") self.channelList.setFocus() # for adding items to list must create a model self.model = QStandardItemModel() self.channelList.setModel(self.model) self.controlLayout = QHBoxLayout() self.controlLayout.setContentsMargins(5, 0, 5, 0) self.controlLayout.addWidget(self.playButton) self.controlLayout.addWidget(self.lbl) self.controlLayout.addWidget(self.positionSlider) self.controlLayout.addWidget(self.elbl) self.mainLayout = QHBoxLayout() # contains video and cotrol widgets to the left side self.layout = QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.addWidget(self.videoWidget) self.layout.addLayout(self.controlLayout) # adds channels list to the right self.mainLayout.addLayout(self.layout) self.mainLayout.addWidget(self.channelList) self.setLayout(self.mainLayout) self.myinfo = "©2020\nTIVOpy v1.0" self.widescreen = True #### shortcuts #### self.shortcut = QShortcut(QKeySequence("q"), self) self.shortcut.activated.connect(self.handleQuit) self.shortcut = QShortcut(QKeySequence("u"), self) self.shortcut.activated.connect(self.playFromURL) self.shortcut = QShortcut(QKeySequence(Qt.Key_Space), self) self.shortcut.activated.connect(self.play) self.shortcut = QShortcut(QKeySequence(Qt.Key_F), self) self.shortcut.activated.connect(self.handleFullscreen) self.shortcut = QShortcut(QKeySequence(Qt.Key_Escape), self) self.shortcut.activated.connect(self.exitFullscreen) self.shortcut.activated.connect(self.handleFullscreen) self.shortcut = QShortcut(QKeySequence("i"), self) self.shortcut.activated.connect(self.handleInfo) self.shortcut = QShortcut(QKeySequence("s"), self) self.shortcut.activated.connect(self.toggleSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider) self.mediaPlayer.setVideoOutput(self.videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.positionChanged.connect(self.handleLabel) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) self.populateChannelList() self.selectChannel() self.initialPlay() def playFromURL(self): self.mediaPlayer.pause() self.myurl = self.clip.text() self.mediaPlayer.setMedia(QMediaContent(QUrl(self.myurl))) self.playButton.setEnabled(True) self.mediaPlayer.play() self.hideSlider() print(self.myurl) def dataReady(self): self.myurl = str(self.process.readAll(), encoding='utf8').rstrip() ### self.myurl = self.myurl.partition("\n")[0] print(self.myurl) self.clip.setText(self.myurl) self.playFromURL() def play(self): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPause)) else: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) mtime = QTime(0, 0, 0, 0) mtime = mtime.addMSecs(self.mediaPlayer.duration()) self.elbl.setText(mtime.toString()) def setPosition(self, position): self.mediaPlayer.setPosition(position) def handleError(self): self.playButton.setEnabled(False) print("Error: ", self.mediaPlayer.errorString()) def handleQuit(self): self.mediaPlayer.stop() print("Goodbye ...") app.quit() def contextMenuRequested(self, point): menu = QMenu() actionURL = menu.addAction(QIcon.fromTheme("browser"), "URL from Clipboard (u)") menu.addSeparator() actionToggle = menu.addAction(QIcon.fromTheme("next"), "Show / Hide Channels (s)") actionFull = menu.addAction(QIcon.fromTheme("view-fullscreen"), "Fullscreen (f)") menu.addSeparator() actionInfo = menu.addAction(QIcon.fromTheme("help-about"), "About (i)") menu.addSeparator() actionQuit = menu.addAction(QIcon.fromTheme("application-exit"), "Exit (q)") actionQuit.triggered.connect(self.handleQuit) actionFull.triggered.connect(self.handleFullscreen) actionInfo.triggered.connect(self.handleInfo) actionToggle.triggered.connect(self.toggleSlider) actionURL.triggered.connect(self.playFromURL) menu.exec_(self.mapToGlobal(point)) def wheelEvent(self, event): mscale = event.angleDelta().y() / 13 self.mediaPlayer.setVolume(self.mediaPlayer.volume() + mscale) print("Volume: " + str(self.mediaPlayer.volume())) def mouseDoubleClickEvent(self, event): if event.buttons() == Qt.LeftButton: self.handleFullscreen() def handleFullscreen(self): if self.windowState() and Qt.WindowFullScreen: self.showNormal() else: self.showFullScreen() def exitFullscreen(self): self.showNormal() def handleInfo(self): QMessageBox.about(self, "About", self.myinfo) def toggleSlider(self): if self.positionSlider.isVisible(): self.hideSlider() else: self.showSlider() def hideSlider(self): self.channelList.hide() self.playButton.hide() self.lbl.hide() self.positionSlider.hide() self.elbl.hide() def showSlider(self): self.channelList.show() self.playButton.show() self.lbl.show() self.positionSlider.show() self.elbl.show() self.channelList.setFocus() def forwardSlider(self): self.mediaPlayer.setPosition(self.mediaPlayer.position() + 1000 * 60) def backSlider(self): self.mediaPlayer.setPosition(self.mediaPlayer.position() - 1000 * 60) def volumeUp(self): self.mediaPlayer.setVolume(self.mediaPlayer.volume() + 10) print("Volume: " + str(self.mediaPlayer.volume())) def volumeDown(self): self.mediaPlayer.setVolume(self.mediaPlayer.volume() - 10) print("Volume: " + str(self.mediaPlayer.volume())) def dragEnterEvent(self, event): if event.mimeData().hasUrls(): event.accept() elif event.mimeData().hasText(): event.accept() else: event.ignore() def dropEvent(self, event): print("drop") if event.mimeData().hasUrls(): url = event.mimeData().urls()[0].toString() print("url = ", url) self.mediaPlayer.stop() self.mediaPlayer.setMedia(QMediaContent(QUrl(url))) self.playButton.setEnabled(True) self.mediaPlayer.play() elif event.mimeData().hasText(): mydrop = event.mimeData().text() print("generic url = ", mydrop) self.mediaPlayer.setMedia(QMediaContent(QUrl(mydrop))) self.playButton.setEnabled(True) self.mediaPlayer.play() self.hideSlider() def loadFilm(self, f): self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(f))) self.playButton.setEnabled(True) self.mediaPlayer.play() def populateChannelList(self): # file must be in same directory as the script FILEPATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "canaletv.txt") # lines from file with "channel name" -- "link" channelArray = [] # split file by line and adding it to the array with open(FILEPATH) as f: for line in f: channelArray.append(line.rstrip()) # dictionary with key = channel name and value = link self.channelDict = dict(ch.split(" -- ") for ch in channelArray) for channel in self.channelDict.keys(): item = QStandardItem(channel) self.model.appendRow(item) def selectedItemBehavior(self, index): # gets the link for the selected channel and plays it itms = self.channelList.selectedIndexes() for it in itms: channel = it.data() link = self.channelDict[channel] self.mediaPlayer.setMedia(QMediaContent(QUrl(link))) self.play() def selectChannel(self): # selecting channel from sidebar calls selectedItemBehavior self.selModel = self.channelList.selectionModel() self.selModel.selectionChanged.connect(self.selectedItemBehavior) def initialPlay(self): # play somenting when app opens self.mediaPlayer.setMedia(QMediaContent(QUrl("https://vid.hls.protv.ro/proxhdn/proxhd_3_34/index.m3u8?1"))) self.play() def handleLabel(self): self.lbl.clear() mtime = QTime(0, 0, 0, 0) self.time = mtime.addMSecs(self.mediaPlayer.position()) self.lbl.setText(self.time.toString())
class Ui_window(object): def setupUi(self, window): window.setObjectName("window") window.resize(789, 614) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(window.sizePolicy().hasHeightForWidth()) window.setSizePolicy(sizePolicy) self.wid = QtWidgets.QWidget(window) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.wid.sizePolicy().hasHeightForWidth()) self.wid.setSizePolicy(sizePolicy) self.wid.setObjectName("wid") self.verticalLayoutWidget = QtWidgets.QWidget(self.wid) self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 0, 621, 381)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.videoWidget = QVideoWidget(self.verticalLayoutWidget) self.videoWidget.setEnabled(True) self.videoWidget.setMinimumSize(QtCore.QSize(100, 100)) self.videoWidget.setObjectName("videoWidget") self.verticalLayout.addWidget(self.videoWidget) self.horizontalLayoutWidget = QtWidgets.QWidget(self.wid) self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 390, 621, 80)) self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.playButton = QtWidgets.QPushButton(self.horizontalLayoutWidget) self.playButton.setText("") self.playButton.setObjectName("playButton") self.horizontalLayout_2.addWidget(self.playButton) self.positionSlider = QtWidgets.QSlider(self.horizontalLayoutWidget) self.positionSlider.setOrientation(QtCore.Qt.Horizontal) self.positionSlider.setObjectName("positionSlider") self.horizontalLayout_2.addWidget(self.positionSlider) self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.wid) self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(10, 480, 621, 80)) self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2) self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.pre_pb = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) self.pre_pb.setObjectName("pre_pb") self.horizontalLayout_3.addWidget(self.pre_pb) self.post_pb = QtWidgets.QCheckBox(self.wid) self.post_pb.setObjectName("post_pb") self.post_pb.setGeometry(QtCore.QRect(655, 474, 150, 31)) #self.horizontalLayout_3.addWidget(self.post_pb) self.separate_audio_pb = QtWidgets.QPushButton(self.wid) self.separate_audio_pb.setGeometry(QtCore.QRect(640, 10, 141, 31)) self.separate_audio_pb.setObjectName("separate_audio_pb") self.play_chosen_pb = QtWidgets.QPushButton(self.wid) self.play_chosen_pb.setGeometry(QtCore.QRect(660, 504, 111, 31)) self.play_chosen_pb.setObjectName("play_chosen_pb") window.setCentralWidget(self.wid) self.menuBar = QtWidgets.QMenuBar(window) self.menuBar.setGeometry(QtCore.QRect(0, 0, 789, 22)) self.menuBar.setObjectName("menuBar") self.fileMenu = QtWidgets.QMenu(self.menuBar) self.fileMenu.setObjectName("fileMenu") window.setMenuBar(self.menuBar) self.statusbar = QtWidgets.QStatusBar(window) self.statusbar.setObjectName("statusbar") window.setStatusBar(self.statusbar) self.openAction = QtWidgets.QAction(window) self.openAction.setObjectName("openAction") self.exitAction = QtWidgets.QAction(window) self.exitAction.setObjectName("exitAction") self.fileMenu.addAction(self.openAction) self.fileMenu.addAction(self.exitAction) self.menuBar.addAction(self.fileMenu.menuAction()) self.retranslateUi(window) QtCore.QMetaObject.connectSlotsByName(window) def retranslateUi(self, window): _translate = QtCore.QCoreApplication.translate window.setWindowTitle(_translate("window", "MainWindow")) self.pre_pb.setText(_translate("window", "Pre-Processing")) self.post_pb.setText(_translate("window", "Post-Processing")) self.separate_audio_pb.setText(_translate("window", "Separate Audio")) self.play_chosen_pb.setText(_translate("window", "Play Chosen")) self.fileMenu.setTitle(_translate("window", "File")) self.openAction.setText(_translate("window", "Open")) self.exitAction.setText(_translate("window", "Exit"))
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1409, 1146) MainWindow.setStyleSheet("") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout_3.setObjectName("verticalLayout_3") self.author_label_2 = QtWidgets.QLabel(self.centralwidget) self.author_label_2.setMaximumSize(QtCore.QSize(16777215, 50)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(20) self.author_label_2.setFont(font) self.author_label_2.setAlignment(QtCore.Qt.AlignCenter) self.author_label_2.setObjectName("author_label_2") self.verticalLayout_3.addWidget(self.author_label_2) self.horizontalLayout_7 = QtWidgets.QHBoxLayout() self.horizontalLayout_7.setObjectName("horizontalLayout_7") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_7.addItem(spacerItem) self.author_label = QtWidgets.QLabel(self.centralwidget) self.author_label.setMinimumSize(QtCore.QSize(200, 30)) self.author_label.setMaximumSize(QtCore.QSize(16777215, 30)) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(-1) font.setBold(True) font.setWeight(75) self.author_label.setFont(font) self.author_label.setStyleSheet( "QStackedWidget, QLabel, QPushButton, QRadioButton, QCheckBox, \n" "QGroupBox, QStatusBar, QToolButton, QComboBox, QDialog {\n" " background-color: #222222;\n" " color: #BBBBBB;\n" " font-family: \"Calibri\";\n" " font-size:13px;\n" " font-weight:bold;\n" "}") self.author_label.setAlignment(QtCore.Qt.AlignCenter) self.author_label.setObjectName("author_label") self.horizontalLayout_7.addWidget(self.author_label) self.verticalLayout_3.addLayout(self.horizontalLayout_7) self.splitter = QtWidgets.QSplitter(self.centralwidget) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName("splitter") self.groupBox = QtWidgets.QGroupBox(self.splitter) self.groupBox.setMinimumSize(QtCore.QSize(350, 0)) self.groupBox.setMaximumSize(QtCore.QSize(1300, 16777215)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.groupBox.setFont(font) self.groupBox.setAlignment(QtCore.Qt.AlignCenter) self.groupBox.setObjectName("groupBox") self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox) self.verticalLayout.setObjectName("verticalLayout") self.input_media_tabWidget = QtWidgets.QTabWidget(self.groupBox) self.input_media_tabWidget.setObjectName("input_media_tabWidget") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.tab) self.horizontalLayout_8.setObjectName("horizontalLayout_8") self.input_video_widget = QVideoWidget(self.tab) self.input_video_widget.setMinimumSize(QtCore.QSize(100, 100)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.input_video_widget.setFont(font) self.input_video_widget.setObjectName("input_video_widget") self.horizontalLayout_8.addWidget(self.input_video_widget) self.input_media_tabWidget.addTab(self.tab, "") self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName("tab_2") self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.tab_2) self.horizontalLayout_9.setObjectName("horizontalLayout_9") self.input_real_time_label = QtWidgets.QLabel(self.tab_2) self.input_real_time_label.setObjectName("input_real_time_label") self.horizontalLayout_9.addWidget(self.input_real_time_label) self.input_media_tabWidget.addTab(self.tab_2, "") self.verticalLayout.addWidget(self.input_media_tabWidget) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label = QtWidgets.QLabel(self.groupBox) font = QtGui.QFont() font.setFamily("Calibri") font.setPointSize(-1) font.setBold(True) font.setWeight(75) self.label.setFont(font) self.label.setStyleSheet("QLabel {\n" " background-color: #543044;\n" " color: #BBBBBB;\n" " font-family: \"Calibri\";\n" " font-size:13px;\n" " font-weight:bold;\n" "}") self.label.setObjectName("label") self.horizontalLayout_2.addWidget(self.label) self.predict_progressBar = QtWidgets.QProgressBar(self.groupBox) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.predict_progressBar.setFont(font) self.predict_progressBar.setStyleSheet("QProgressBar{\n" "border:2px solid grey;\n" "border-radius:5px;\n" "text-align: center;\n" "}\n" "\n" "\n" "QProgressBar::chunk {\n" "background-color:#CD96CD;\n" "width:10px;\n" "margin:0.5px;\n" "}") self.predict_progressBar.setMinimum(0) self.predict_progressBar.setProperty("value", 19) self.predict_progressBar.setObjectName("predict_progressBar") self.horizontalLayout_2.addWidget(self.predict_progressBar) self.fps_label = QtWidgets.QLabel(self.groupBox) self.fps_label.setMinimumSize(QtCore.QSize(0, 0)) self.fps_label.setMaximumSize(QtCore.QSize(16777215, 20)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.fps_label.setFont(font) self.fps_label.setObjectName("fps_label") self.horizontalLayout_2.addWidget(self.fps_label) self.verticalLayout.addLayout(self.horizontalLayout_2) self.horizontalLayout_13 = QtWidgets.QHBoxLayout() self.horizontalLayout_13.setObjectName("horizontalLayout_13") spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_13.addItem(spacerItem1) self.weight_label = QtWidgets.QLabel(self.groupBox) self.weight_label.setMinimumSize(QtCore.QSize(0, 25)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setBold(True) font.setWeight(75) self.weight_label.setFont(font) self.weight_label.setLayoutDirection(QtCore.Qt.LeftToRight) self.weight_label.setStyleSheet("") self.weight_label.setAlignment(QtCore.Qt.AlignCenter) self.weight_label.setObjectName("weight_label") self.horizontalLayout_13.addWidget(self.weight_label) spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_13.addItem(spacerItem2) self.real_time_checkBox = QtWidgets.QCheckBox(self.groupBox) self.real_time_checkBox.setMinimumSize(QtCore.QSize(0, 25)) self.real_time_checkBox.setMaximumSize(QtCore.QSize(130, 16777215)) self.real_time_checkBox.setObjectName("real_time_checkBox") self.horizontalLayout_13.addWidget(self.real_time_checkBox) spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_13.addItem(spacerItem3) self.verticalLayout.addLayout(self.horizontalLayout_13) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem4) self.import_media_pushButton = QtWidgets.QPushButton(self.groupBox) self.import_media_pushButton.setMinimumSize(QtCore.QSize(0, 25)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.import_media_pushButton.setFont(font) self.import_media_pushButton.setStyleSheet( "QPushButton{\n" " background-color:#2828FF;\n" " color:#ffffff;\n" " border-radius: 5px;\n" "}\n" "\n" "QPushButton:hover{\n" " color:#FFFFFF;\n" " background:#9393FF;\n" "}\n" "") self.import_media_pushButton.setObjectName("import_media_pushButton") self.horizontalLayout.addWidget(self.import_media_pushButton) spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem5) self.start_predict_pushButton = QtWidgets.QPushButton(self.groupBox) self.start_predict_pushButton.setMinimumSize(QtCore.QSize(0, 25)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.start_predict_pushButton.setFont(font) self.start_predict_pushButton.setStyleSheet( "QPushButton{\n" " background-color:#16A085;\n" " color:#ffffff;\n" " border-radius: 5px;\n" "}\n" "\n" "QPushButton:hover{\n" " color:#FFFFFF;\n" " background:#2EE1C1;\n" "}\n" "") self.start_predict_pushButton.setObjectName("start_predict_pushButton") self.horizontalLayout.addWidget(self.start_predict_pushButton) spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem6) self.verticalLayout.addLayout(self.horizontalLayout) self.groupBox_2 = QtWidgets.QGroupBox(self.splitter) self.groupBox_2.setMinimumSize(QtCore.QSize(500, 0)) self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.groupBox_2.setFont(font) self.groupBox_2.setAlignment(QtCore.Qt.AlignCenter) self.groupBox_2.setObjectName("groupBox_2") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_2) self.verticalLayout_2.setObjectName("verticalLayout_2") self.output_media_tabWidget = QtWidgets.QTabWidget(self.groupBox_2) self.output_media_tabWidget.setObjectName("output_media_tabWidget") self.tab_3 = QtWidgets.QWidget() self.tab_3.setObjectName("tab_3") self.horizontalLayout_10 = QtWidgets.QHBoxLayout(self.tab_3) self.horizontalLayout_10.setObjectName("horizontalLayout_10") self.output_video_widget = QVideoWidget(self.tab_3) self.output_video_widget.setMinimumSize(QtCore.QSize(100, 100)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.output_video_widget.setFont(font) self.output_video_widget.setObjectName("output_video_widget") self.horizontalLayout_10.addWidget(self.output_video_widget) self.output_media_tabWidget.addTab(self.tab_3, "") self.tab_4 = QtWidgets.QWidget() self.tab_4.setObjectName("tab_4") self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.tab_4) self.horizontalLayout_11.setObjectName("horizontalLayout_11") self.output_real_time_label = QtWidgets.QLabel(self.tab_4) self.output_real_time_label.setObjectName("output_real_time_label") self.horizontalLayout_11.addWidget(self.output_real_time_label) self.output_media_tabWidget.addTab(self.tab_4, "") self.verticalLayout_2.addWidget(self.output_media_tabWidget) self.horizontalLayout_12 = QtWidgets.QHBoxLayout() self.horizontalLayout_12.setObjectName("horizontalLayout_12") spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_12.addItem(spacerItem7) self.open_predict_file_pushButton = QtWidgets.QPushButton( self.groupBox_2) self.open_predict_file_pushButton.setMinimumSize(QtCore.QSize(0, 25)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.open_predict_file_pushButton.setFont(font) self.open_predict_file_pushButton.setStyleSheet( "QPushButton{\n" " background-color:#d71345;\n" " color:#ffffff;\n" " border-radius: 5px;\n" "}\n" "\n" "QPushButton:hover{\n" " color:#FFFFFF;\n" " background:#c76968;\n" "}\n" "") self.open_predict_file_pushButton.setObjectName( "open_predict_file_pushButton") self.horizontalLayout_12.addWidget(self.open_predict_file_pushButton) spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_12.addItem(spacerItem8) self.verticalLayout_2.addLayout(self.horizontalLayout_12) self.verticalLayout_3.addWidget(self.splitter) self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_4.addItem(spacerItem9) self.video_horizontalSlider = QtWidgets.QSlider(self.centralwidget) self.video_horizontalSlider.setMaximumSize(QtCore.QSize(16777215, 35)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.video_horizontalSlider.setFont(font) self.video_horizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.video_horizontalSlider.setObjectName("video_horizontalSlider") self.horizontalLayout_4.addWidget(self.video_horizontalSlider) self.video_percent_label = QtWidgets.QLabel(self.centralwidget) self.video_percent_label.setMaximumSize(QtCore.QSize(16777215, 35)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.video_percent_label.setFont(font) self.video_percent_label.setObjectName("video_percent_label") self.horizontalLayout_4.addWidget(self.video_percent_label) spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_4.addItem(spacerItem10) self.verticalLayout_3.addLayout(self.horizontalLayout_4) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") spacerItem11 = QtWidgets.QSpacerItem(40, 25, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem11) self.play_pushButton = QtWidgets.QPushButton(self.centralwidget) self.play_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.play_pushButton.setMaximumSize(QtCore.QSize(16777215, 35)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.play_pushButton.setFont(font) icon = QtGui.QIcon() icon.addPixmap( QtGui.QPixmap("C:/Users/PeterH/.designer/backup/icon/play.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.play_pushButton.setIcon(icon) self.play_pushButton.setObjectName("play_pushButton") self.horizontalLayout_3.addWidget(self.play_pushButton) self.pause_pushButton = QtWidgets.QPushButton(self.centralwidget) self.pause_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.pause_pushButton.setMaximumSize(QtCore.QSize(16777215, 35)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.pause_pushButton.setFont(font) icon1 = QtGui.QIcon() icon1.addPixmap( QtGui.QPixmap("C:/Users/PeterH/.designer/backup/icon/pause.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pause_pushButton.setIcon(icon1) self.pause_pushButton.setObjectName("pause_pushButton") self.horizontalLayout_3.addWidget(self.pause_pushButton) spacerItem12 = QtWidgets.QSpacerItem(40, 25, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem12) self.verticalLayout_3.addLayout(self.horizontalLayout_3) self.horizontalLayout_5 = QtWidgets.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget) self.groupBox_3.setMaximumSize(QtCore.QSize(16777215, 150)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.groupBox_3.setFont(font) self.groupBox_3.setObjectName("groupBox_3") self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.groupBox_3) self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.predict_info_plainTextEdit = QtWidgets.QPlainTextEdit( self.groupBox_3) self.predict_info_plainTextEdit.setMaximumSize( QtCore.QSize(16777215, 100)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.predict_info_plainTextEdit.setFont(font) self.predict_info_plainTextEdit.setStyleSheet( "\n" "QPlainTextEdit {\n" " background-color: cornsilk;\n" " selection-color: #0a214c; \n" " selection-background-color: #C19A6B;\n" "}\n" "") self.predict_info_plainTextEdit.setObjectName( "predict_info_plainTextEdit") self.horizontalLayout_6.addWidget(self.predict_info_plainTextEdit) self.horizontalLayout_5.addWidget(self.groupBox_3) self.verticalLayout_3.addLayout(self.horizontalLayout_5) self.gpu_info_chart = QChartView(self.centralwidget) self.gpu_info_chart.setMaximumSize(QtCore.QSize(16777215, 100)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(10) self.gpu_info_chart.setFont(font) self.gpu_info_chart.setObjectName("gpu_info_chart") self.verticalLayout_3.addWidget(self.gpu_info_chart) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1409, 23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) self.input_media_tabWidget.setCurrentIndex(0) self.output_media_tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.author_label_2.setText( _translate("MainWindow", "Intelligent Monitoring System of Construction Site")) self.author_label.setText( _translate("MainWindow", "Product by: HinGwenWoong")) self.groupBox.setTitle(_translate("MainWindow", "Input Media")) self.input_media_tabWidget.setTabText( self.input_media_tabWidget.indexOf(self.tab), _translate("MainWindow", "结果")) self.input_real_time_label.setText( _translate("MainWindow", "HinGwenWoong")) self.input_media_tabWidget.setTabText( self.input_media_tabWidget.indexOf(self.tab_2), _translate("MainWindow", "实时推理")) self.label.setText(_translate("MainWindow", " Processing: ")) self.fps_label.setText(_translate("MainWindow", "(FPS)")) self.weight_label.setText(_translate("MainWindow", "weight path:")) self.real_time_checkBox.setText( _translate("MainWindow", "Real Time Predict")) self.import_media_pushButton.setStatusTip( _translate("MainWindow", "Import video to predict")) self.import_media_pushButton.setText(_translate( "MainWindow", "Import")) self.start_predict_pushButton.setStatusTip( _translate("MainWindow", "Predict the vedio")) self.start_predict_pushButton.setText( _translate("MainWindow", "Predict")) self.groupBox_2.setTitle(_translate("MainWindow", "Output Media")) self.output_media_tabWidget.setTabText( self.output_media_tabWidget.indexOf(self.tab_3), _translate("MainWindow", "结果")) self.output_real_time_label.setText( _translate("MainWindow", "HinGwenWoong")) self.output_media_tabWidget.setTabText( self.output_media_tabWidget.indexOf(self.tab_4), _translate("MainWindow", "实时推理")) self.open_predict_file_pushButton.setText( _translate("MainWindow", "Open in Browser")) self.video_percent_label.setText(_translate("MainWindow", "0 %")) self.play_pushButton.setText(_translate("MainWindow", "Play")) self.pause_pushButton.setText(_translate("MainWindow", "Pause")) self.groupBox_3.setTitle(_translate("MainWindow", "Predict Info:"))
class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(706, 493) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/plugins/Video_UAV_Tracker/icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) Form.setWindowIcon(icon) self.verticalLayout_3 = QtWidgets.QVBoxLayout(Form) self.verticalLayout_3.setObjectName("verticalLayout_3") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.pushButton_3 = QtWidgets.QPushButton(Form) font = QtGui.QFont() font.setKerning(True) self.pushButton_3.setFont(font) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/VgisIcon/Hand-icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.pushButton_3.setIcon(icon1) self.pushButton_3.setAutoExclusive(False) self.pushButton_3.setAutoDefault(False) self.pushButton_3.setDefault(False) self.pushButton_3.setFlat(False) self.pushButton_3.setObjectName("pushButton_3") self.horizontalLayout.addWidget(self.pushButton_3) self.toolButton_6 = QtWidgets.QToolButton(Form) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/plugins/Video_UAV_Tracker/iconNewTabEditorConsole.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.toolButton_6.setIcon(icon2) self.toolButton_6.setObjectName("toolButton_6") self.horizontalLayout.addWidget(self.toolButton_6) spacerItem = QtWidgets.QSpacerItem(23, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.toolButton_4 = QtWidgets.QToolButton(Form) self.toolButton_4.setStyleSheet("background: url(/mnt/574916AB2EEEC400/LAVORO/Sviluppo_VUT_StandAlone/Progetto_VUT/115757-magic-marker-icon-people-things-hand22-sc48.png)") self.toolButton_4.setObjectName("toolButton_4") self.horizontalLayout.addWidget(self.toolButton_4) self.toolButton_5 = QtWidgets.QToolButton(Form) self.toolButton_5.setObjectName("toolButton_5") self.horizontalLayout.addWidget(self.toolButton_5) self.verticalLayout_3.addLayout(self.horizontalLayout) self.dockWidget_2 = QtWidgets.QDockWidget(Form) self.dockWidget_2.setFeatures(QtWidgets.QDockWidget.NoDockWidgetFeatures) self.dockWidget_2.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea) self.dockWidget_2.setObjectName("dockWidget_2") self.dockWidgetContents_7 = QtWidgets.QWidget() self.dockWidgetContents_7.setObjectName("dockWidgetContents_7") self.gridLayout_2 = QtWidgets.QGridLayout(self.dockWidgetContents_7) self.gridLayout_2.setObjectName("gridLayout_2") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.video_frame = QVideoWidget(Form) p = self.video_frame.palette() p.setColor(QtGui.QPalette.Window, QtCore.Qt.black) self.video_frame.setPalette(p) self.video_frame.setAttribute(QtCore.Qt.WA_OpaquePaintEvent) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.video_frame.sizePolicy().hasHeightForWidth()) self.video_frame.setSizePolicy(sizePolicy) self.video_frame.setMinimumSize(QtCore.QSize(200, 200)) self.video_frame.setStyleSheet("background-color: rgb(0, 0, 0);") self.video_frame.setObjectName("video_frame") self.verticalLayout.addWidget(self.video_frame) self.horizontalSlider = QtWidgets.QSlider(self.dockWidgetContents_7) self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.horizontalSlider.setObjectName("horizontalSlider") self.verticalLayout.addWidget(self.horizontalSlider) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") spacerItem1 = QtWidgets.QSpacerItem(98, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem1) self.toolButton_11 = QtWidgets.QToolButton(self.dockWidgetContents_7) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionArrowLeft.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.toolButton_11.setIcon(icon3) self.toolButton_11.setObjectName("toolButton_11") self.horizontalLayout_3.addWidget(self.toolButton_11) self.SkipBacktoolButton_8 = QtWidgets.QToolButton(self.dockWidgetContents_7) self.SkipBacktoolButton_8.setStyleSheet("") icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionAtlasPrev.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.SkipBacktoolButton_8.setIcon(icon4) self.SkipBacktoolButton_8.setObjectName("SkipBacktoolButton_8") self.horizontalLayout_3.addWidget(self.SkipBacktoolButton_8) self.playButton = QtWidgets.QToolButton(self.dockWidgetContents_7) self.playButton.setObjectName("playButton") self.horizontalLayout_3.addWidget(self.playButton) self.muteButton = QtWidgets.QToolButton(self.dockWidgetContents_7) self.muteButton.setText("") self.muteButton.setObjectName("muteButton") self.horizontalLayout_3.addWidget(self.muteButton) self.replayPosition_label = QtWidgets.QLabel(self.dockWidgetContents_7) self.replayPosition_label.setObjectName("replayPosition_label") self.horizontalLayout_3.addWidget(self.replayPosition_label) self.SkipFortoolButton_9 = QtWidgets.QToolButton(self.dockWidgetContents_7) self.SkipFortoolButton_9.setStyleSheet("") icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionAtlasNext.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.SkipFortoolButton_9.setIcon(icon5) self.SkipFortoolButton_9.setObjectName("SkipFortoolButton_9") self.horizontalLayout_3.addWidget(self.SkipFortoolButton_9) self.toolButton_12 = QtWidgets.QToolButton(self.dockWidgetContents_7) icon6 = QtGui.QIcon() icon6.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionArrowRight.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.toolButton_12.setIcon(icon6) self.toolButton_12.setObjectName("toolButton_12") self.horizontalLayout_3.addWidget(self.toolButton_12) spacerItem2 = QtWidgets.QSpacerItem(98, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem2) self.verticalLayout.addLayout(self.horizontalLayout_3) self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1) self.dockWidget_2.setWidget(self.dockWidgetContents_7) self.verticalLayout_3.addWidget(self.dockWidget_2) self.dockWidget_4 = QtWidgets.QDockWidget(Form) self.dockWidget_4.setMaximumSize(QtCore.QSize(524287, 121)) self.dockWidget_4.setFeatures(QtWidgets.QDockWidget.NoDockWidgetFeatures) self.dockWidget_4.setAllowedAreas(QtCore.Qt.BottomDockWidgetArea) self.dockWidget_4.setObjectName("dockWidget_4") self.dockWidgetContents_6 = QtWidgets.QWidget() self.dockWidgetContents_6.setObjectName("dockWidgetContents_6") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.dockWidgetContents_6) self.verticalLayout_2.setObjectName("verticalLayout_2") self.label = QtWidgets.QLabel(self.dockWidgetContents_6) self.label.setObjectName("label") self.verticalLayout_2.addWidget(self.label) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.pushButtonCutA_6 = QtWidgets.QPushButton(self.dockWidgetContents_6) self.pushButtonCutA_6.setEnabled(True) self.pushButtonCutA_6.setObjectName("pushButtonCutA_6") self.horizontalLayout_2.addWidget(self.pushButtonCutA_6) self.pushButtonCutB_6 = QtWidgets.QPushButton(self.dockWidgetContents_6) self.pushButtonCutB_6.setObjectName("pushButtonCutB_6") self.horizontalLayout_2.addWidget(self.pushButtonCutB_6) self.label_7 = QtWidgets.QLabel(self.dockWidgetContents_6) self.label_7.setObjectName("label_7") self.horizontalLayout_2.addWidget(self.label_7) self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(self.dockWidgetContents_6) self.doubleSpinBox_2.setObjectName("doubleSpinBox_2") self.horizontalLayout_2.addWidget(self.doubleSpinBox_2) self.comboBox_6 = QtWidgets.QComboBox(self.dockWidgetContents_6) self.comboBox_6.setObjectName("comboBox_6") self.comboBox_6.addItem("") self.comboBox_6.addItem("") self.horizontalLayout_2.addWidget(self.comboBox_6) self.pushButton_5 = QtWidgets.QPushButton(self.dockWidgetContents_6) self.pushButton_5.setObjectName("pushButton_5") self.horizontalLayout_2.addWidget(self.pushButton_5) self.pushButtonCut_2 = QtWidgets.QPushButton(self.dockWidgetContents_6) self.pushButtonCut_2.setObjectName("pushButtonCut_2") self.horizontalLayout_2.addWidget(self.pushButtonCut_2) self.verticalLayout_2.addLayout(self.horizontalLayout_2) self.progressBar = QtWidgets.QProgressBar(self.dockWidgetContents_6) self.progressBar.setProperty("value", 24) self.progressBar.setObjectName("progressBar") self.verticalLayout_2.addWidget(self.progressBar) self.dockWidget_4.setWidget(self.dockWidgetContents_6) self.verticalLayout_3.addWidget(self.dockWidget_4) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Video UAV Tracker - Player")) self.pushButton_3.setToolTip(_translate("Form", "<html><head/><body><p>Move along Video directly clicking on gps track</p></body></html>")) self.pushButton_3.setText(_translate("Form", "MapTool ")) self.toolButton_6.setToolTip(_translate("Form", "<html><head/><body><p>Add point</p></body></html>")) self.toolButton_6.setText(_translate("Form", "o")) self.toolButton_4.setToolTip(_translate("Form", "<html><head/><body><p>Enable extract frames toolbox</p><p><br/></p></body></html>")) self.toolButton_4.setText(_translate("Form", "Extract frames")) self.toolButton_5.setText(_translate("Form", "Close")) self.toolButton_11.setText(_translate("Form", "<<")) self.SkipBacktoolButton_8.setText(_translate("Form", "<")) self.playButton.setText(_translate("Form", "> / ||")) self.replayPosition_label.setText(_translate("Form", "-:- / -:-")) self.SkipFortoolButton_9.setText(_translate("Form", ">")) self.toolButton_12.setText(_translate("Form", ">>")) self.label.setText(_translate("Form", "Export Frames Tool")) self.pushButtonCutA_6.setToolTip(_translate("Form", "<html><head/><body><p>Export from actual Video Frame</p></body></html>")) self.pushButtonCutA_6.setText(_translate("Form", "From A")) self.pushButtonCutB_6.setToolTip(_translate("Form", "<html><head/><body><p>Export to actual Video Frame</p></body></html>")) self.pushButtonCutB_6.setText(_translate("Form", "To B")) self.label_7.setText(_translate("Form", "Pick one frame every")) self.comboBox_6.setItemText(0, _translate("Form", "meters")) self.comboBox_6.setItemText(1, _translate("Form", "seconds")) self.pushButton_5.setText(_translate("Form", "Cancel")) self.pushButtonCut_2.setText(_translate("Form", "Extract!"))
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1318, 719) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setEnabled(True) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.centralwidget.sizePolicy().hasHeightForWidth()) self.centralwidget.setSizePolicy(sizePolicy) self.centralwidget.setObjectName("centralwidget") self.startButton = QtWidgets.QPushButton(self.centralwidget) self.startButton.setGeometry(QtCore.QRect(10, 630, 231, 41)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.startButton.sizePolicy().hasHeightForWidth()) self.startButton.setSizePolicy(sizePolicy) self.startButton.setMaximumSize(QtCore.QSize(16777215, 41)) font = QtGui.QFont() font.setPointSize(14) self.startButton.setFont(font) self.startButton.setObjectName("startButton") self.EmotionLabel = QtWidgets.QLabel(self.centralwidget) self.EmotionLabel.setGeometry(QtCore.QRect(10, 20, 400, 21)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.EmotionLabel.sizePolicy().hasHeightForWidth()) self.EmotionLabel.setSizePolicy(sizePolicy) self.EmotionLabel.setMaximumSize(QtCore.QSize(16777215, 21)) font = QtGui.QFont() font.setPointSize(12) self.EmotionLabel.setFont(font) self.EmotionLabel.setObjectName("EmotionLabel") self.graphic1 = GraphicsLayoutWidget(self.centralwidget) self.graphic1.setGeometry(QtCore.QRect(680, 50, 611, 280)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.graphic1.sizePolicy().hasHeightForWidth()) self.graphic1.setSizePolicy(sizePolicy) self.graphic1.setMinimumSize(QtCore.QSize(153, 70)) self.graphic1.setObjectName("graphic1") self.graphic2 = GraphicsLayoutWidget(self.centralwidget) self.graphic2.setGeometry(QtCore.QRect(680, 390, 611, 280)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.graphic2.sizePolicy().hasHeightForWidth()) self.graphic2.setSizePolicy(sizePolicy) self.graphic2.setMinimumSize(QtCore.QSize(153, 70)) self.graphic2.setObjectName("graphic2") self.graphLabel1 = QtWidgets.QLabel(self.centralwidget) self.graphLabel1.setEnabled(True) self.graphLabel1.setGeometry(QtCore.QRect(680, 20, 400, 21)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.graphLabel1.sizePolicy().hasHeightForWidth()) self.graphLabel1.setSizePolicy(sizePolicy) self.graphLabel1.setMaximumSize(QtCore.QSize(16777215, 21)) font = QtGui.QFont() font.setPointSize(12) self.graphLabel1.setFont(font) self.graphLabel1.setObjectName("graphLabel1") self.graphLabel2 = QtWidgets.QLabel(self.centralwidget) self.graphLabel2.setEnabled(True) self.graphLabel2.setGeometry(QtCore.QRect(680, 350, 400, 21)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.graphLabel2.sizePolicy().hasHeightForWidth()) self.graphLabel2.setSizePolicy(sizePolicy) self.graphLabel2.setMaximumSize(QtCore.QSize(16777215, 21)) font = QtGui.QFont() font.setPointSize(12) self.graphLabel2.setFont(font) self.graphLabel2.setObjectName("graphLabel2") self.videoWidget = QVideoWidget(self.centralwidget) self.videoWidget.setGeometry(QtCore.QRect(10, 50, 611, 280)) self.videoWidget.setMinimumSize(QtCore.QSize(153, 70)) self.videoWidget.setObjectName("videoWidget") self.faceWidget = QtWidgets.QLabel(self.centralwidget) self.faceWidget.setGeometry(QtCore.QRect(10, 340, 611, 280)) self.faceWidget.setMinimumSize(QtCore.QSize(153, 70)) self.faceWidget.setText("") self.faceWidget.setObjectName("faceWidget") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1318, 21)) self.menubar.setObjectName("menubar") self.openPrevSession = QtWidgets.QMenu(self.menubar) self.openPrevSession.setObjectName("openPrevSession") self.settings = QtWidgets.QMenu(self.menubar) self.settings.setObjectName("settings") MainWindow.setMenuBar(self.menubar) self.action = QtWidgets.QAction(MainWindow) self.action.setObjectName("action") self.choosePort = QtWidgets.QAction(MainWindow) self.choosePort.setObjectName("choosePort") self.setEmotions = QtWidgets.QAction(MainWindow) self.setEmotions.setObjectName("setEmotions") self.chooseVideo = QtWidgets.QAction(MainWindow) self.chooseVideo.setObjectName("chooseVideo") self.setEmotionsData = QtWidgets.QAction(MainWindow) self.setEmotionsData.setObjectName("setEmotionsData") self.settings.addAction(self.setEmotionsData) self.settings.addAction(self.setEmotions) self.settings.addAction(self.chooseVideo) self.settings.addAction(self.choosePort) self.menubar.addAction(self.settings.menuAction()) self.menubar.addAction(self.openPrevSession.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.startButton.setText(_translate("MainWindow", "Запуск")) self.EmotionLabel.setText(_translate("MainWindow", "Эмоция:")) self.graphLabel1.setText(_translate("MainWindow", "Окраска эмоции")) self.graphLabel2.setText(_translate("MainWindow", "Сила эмоции")) self.openPrevSession.setTitle( _translate("MainWindow", "Загрузить предыдущую сессию работы")) self.settings.setTitle(_translate("MainWindow", "Настройки")) self.action.setText( _translate("MainWindow", "Загрузить предыдущую сессию")) self.choosePort.setText(_translate("MainWindow", "Выбрать порт")) self.setEmotions.setText( _translate("MainWindow", "Настроить определяемые эмоции")) self.chooseVideo.setText(_translate("MainWindow", "Выбрать видеофайл")) self.setEmotionsData.setText( _translate("MainWindow", "Загрузить определяемые эмоции"))
class Ui_playAnomalyVideo(object): def setupUi(self, playAnomalyVideo): playAnomalyVideo.setObjectName("playAnomalyVideo") playAnomalyVideo.resize(594, 543) playAnomalyVideo.setStyleSheet("*{\n" "font-family: century gothic;\n" "background: #2A2F3C ;\n" "}\n" "QLineEdit, QTextEdit{\n" "background-color:#1C1D25;\n" "border:#1C1D25;\n" "color:white;\n" "font-size:18px;\n" "}\n" "QLabel{\n" "color: white;\n" "font-size: 20px;\n" "\n" "}\n" "QPushButton, QToolButton{\n" "font-weight:bold;\n" "color:white ;\n" "background:#1C1D25;\n" "}\n" "QPushButton:hover{\n" "color:white;\n" "background-color:black;\n" "}\n" "") self.centralwidget = QtWidgets.QWidget(playAnomalyVideo) self.centralwidget.setObjectName("centralwidget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget) self.horizontalLayout.setObjectName("horizontalLayout") self.verticalLayout_13 = QtWidgets.QVBoxLayout() self.verticalLayout_13.setObjectName("verticalLayout_13") self.horizontalLayout_6 = QtWidgets.QHBoxLayout() self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.videoPathfield = QtWidgets.QLineEdit(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(31) sizePolicy.setHeightForWidth( self.videoPathfield.sizePolicy().hasHeightForWidth()) self.videoPathfield.setSizePolicy(sizePolicy) self.videoPathfield.setMinimumSize(QtCore.QSize(320, 31)) self.videoPathfield.setStyleSheet("QLineEdit{\n" "background-color:#1C1D25;\n" "border:#1C1D25;\n" "color:white;\n" "font-size:18px;\n" "}") self.videoPathfield.setObjectName("videoPathfield") self.horizontalLayout_6.addWidget(self.videoPathfield) self.videoPathEnter_pushButton = QtWidgets.QPushButton( self.centralwidget) self.videoPathEnter_pushButton.setObjectName( "videoPathEnter_pushButton") self.horizontalLayout_6.addWidget(self.videoPathEnter_pushButton) self.verticalLayout_13.addLayout(self.horizontalLayout_6) spacerItem = QtWidgets.QSpacerItem(10, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.verticalLayout_13.addItem(spacerItem) self.anomalyVideoDisplay = QVideoWidget(self.centralwidget) self.anomalyVideoDisplay.setMinimumSize(QtCore.QSize(350, 400)) self.anomalyVideoDisplay.setMaximumSize( QtCore.QSize(16777215, 16777215)) self.anomalyVideoDisplay.setStyleSheet( "\n" "background-color: rgb(0, 0, 0);\n" "") self.anomalyVideoDisplay.setObjectName("anomalyVideoDisplay") self.verticalLayout_13.addWidget(self.anomalyVideoDisplay) spacerItem1 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.verticalLayout_13.addItem(spacerItem1) self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.play_pushButton = QtWidgets.QPushButton(self.centralwidget) self.play_pushButton.setText("") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/menubar/play-24.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.play_pushButton.setIcon(icon) self.play_pushButton.setObjectName("play_pushButton") self.horizontalLayout_4.addWidget(self.play_pushButton) self.pause_pushButton = QtWidgets.QPushButton(self.centralwidget) self.pause_pushButton.setText("") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/logo/media-pause-24.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pause_pushButton.setIcon(icon1) self.pause_pushButton.setObjectName("pause_pushButton") self.horizontalLayout_4.addWidget(self.pause_pushButton) self.videoSlider = QtWidgets.QSlider(self.centralwidget) self.videoSlider.setOrientation(QtCore.Qt.Horizontal) self.videoSlider.setObjectName("videoSlider") self.horizontalLayout_4.addWidget(self.videoSlider) self.videoDurationChanged = QtWidgets.QLabel(self.centralwidget) self.videoDurationChanged.setObjectName("videoDurationChanged") self.horizontalLayout_4.addWidget(self.videoDurationChanged) self.verticalLayout_13.addLayout(self.horizontalLayout_4) spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout_13.addItem(spacerItem2) self.horizontalLayout.addLayout(self.verticalLayout_13) playAnomalyVideo.setCentralWidget(self.centralwidget) self.retranslateUi(playAnomalyVideo) QtCore.QMetaObject.connectSlotsByName(playAnomalyVideo) def retranslateUi(self, playAnomalyVideo): _translate = QtCore.QCoreApplication.translate playAnomalyVideo.setWindowTitle( _translate("playAnomalyVideo", "MainWindow")) self.videoPathfield.setText( _translate("playAnomalyVideo", "Enter video path here")) self.videoPathEnter_pushButton.setText( _translate("playAnomalyVideo", "Enter")) self.videoDurationChanged.setText( _translate("playAnomalyVideo", "Duration"))
class Ui_MainWindow(QWidget): ## def __init__(self): ## self.setAcceptDrops(True) #create media player object mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) repeatMedia = False repeatItem = "" def formatTime(self, ms): h, r = divmod(ms, 3600000) m, r = divmod(r, 60000) s, _ = divmod(r, 1000) return ("%02d:%02d:%02d" % (h, m, s)) if h else ("%02d:%02d" % (m, s)) def browseFile(self): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.mediaPlayer.play() elif self.mediaPlayer.state() == QMediaPlayer.PausedState: self.mediaPlayer.play() else: media, _ = QFileDialog.getOpenFileName(self, "Open Video") if media != "": self.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(media))) self.mediaPlayer.play() def openFile(self): media, _ = QFileDialog.getOpenFileName(self, "Open Video") if media != "": self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(media))) self.mediaPlayer.play() def pauseVideo(self): self.mediaPlayer.pause() def stopVideo(self): self.mediaPlayer.stop() def vidPosition(self, position): self.mediaPlayer.setPosition(position) def locationChanged(self, position): self.duration.setValue(position) if position >= 0: self.startTime.setText(self.formatTime(position)) if self.mediaPlayer.state() == 0: if self.repeatMedia: self.mediaPlayer.play() else: ## self.duration.setRange(0,0) self.startTime.setText("--:--") self.endTime.setText("--:--") def durationChanged(self, duration): self.duration.setRange(0, duration) playTime = self.mediaPlayer.duration() self.endTime.setText(self.formatTime(playTime)) def volumeControl(self, percentage): self.mediaPlayer.setVolume(percentage) def loopMedia(self): self.repeatMedia = True ## def dragEnterEvent(self, e): ## if e.mimeData().hasUrls(): ## e.acceptProposedAction() ## ## def dropEvent(self, e): ## for url in e.mimeData().urls(): ## media = url ## ## print(media) ## self.model.layoutChanged.emit() ## ## # If not playing, seeking to first of newly added + play. ## if self.player.state() != QMediaPlayer.PlayingState: ## i = self.playlist.mediaCount() - len(e.mimeData().urls()) ## self.playlist.setCurrentIndex(i) ## self.player.play() def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(700, 500) MainWindow.setMinimumSize(QtCore.QSize(700, 500)) MainWindow.setMaximumSize(QtCore.QSize(700, 500)) MainWindow.setStyleSheet("QWidget{\n" " background-color: rgba(3,146,251,0.8);\n" "}\n" "\n" "QMenuBar {\n" " background-color: #fff;\n" "}\n" "\n" "QLabel {\n" " color: #E5F1FB;\n" "}\n" "\n" "#translation {\n" " font-size: 40px;\n" " color: #E5F1FB;\n" "}\n" "\n" "QLineEdit{\n" " background: transparent;\n" " border: none;\n" " color: #E5F1FB;\n" " border-bottom: 1px solid #717072;\n" " font-size: 40px;\n" "}\n" "\n" "QPushButton{\n" " color: #333;\n" " background: #fff;\n" " border-radius: 8px;\n" " font-size: 17px;\n" " padding: 5px;\n" "}\n" "\n" "QPushButton:hover,\n" "QPushButton:focus{\n" " background: rgba(255, 255, 255, 0.8);\n" " color: #000;\n" "}") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setEnabled(True) self.centralwidget.setObjectName("centralwidget") self.videoWidget = QVideoWidget(self.centralwidget) self.videoWidget.setGeometry(QtCore.QRect(0, 0, 700, 391)) self.videoWidget.setMinimumSize(QtCore.QSize(700, 200)) self.videoWidget.setObjectName("videoWidget") ################### Video Widget ################ self.mediaPlayer.setVideoOutput(self.videoWidget) ################################################# self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 390, 691, 91)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.startTime = QtWidgets.QLabel(self.verticalLayoutWidget) self.startTime.setObjectName("startTime") self.horizontalLayout.addWidget(self.startTime) self.duration = QtWidgets.QSlider(self.verticalLayoutWidget) self.duration.setOrientation(QtCore.Qt.Horizontal) self.duration.setObjectName("duration") self.horizontalLayout.addWidget(self.duration) ################### Video Slider ################# self.duration.setRange(0, 0) self.duration.sliderMoved.connect(self.vidPosition) self.mediaPlayer.positionChanged.connect(self.locationChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) ################################################## self.endTime = QtWidgets.QLabel(self.verticalLayoutWidget) self.endTime.setObjectName("endTime") self.horizontalLayout.addWidget(self.endTime) self.verticalLayout.addLayout(self.horizontalLayout) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.play = QtWidgets.QPushButton(self.verticalLayoutWidget) self.play.setObjectName("play") self.horizontalLayout_3.addWidget(self.play) ################### Play Button ################## self.play.clicked.connect(self.browseFile) ################################################## self.pause = QtWidgets.QPushButton(self.verticalLayoutWidget) self.pause.setObjectName("pause") self.horizontalLayout_3.addWidget(self.pause) ################### Pause Button ################# self.pause.clicked.connect(self.pauseVideo) ################################################## spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem) self.prev = QtWidgets.QPushButton(self.verticalLayoutWidget) self.prev.setObjectName("prev") self.horizontalLayout_3.addWidget(self.prev) self.stop = QtWidgets.QPushButton(self.verticalLayoutWidget) self.stop.setObjectName("stop") self.horizontalLayout_3.addWidget(self.stop) ################### Stop Button ################## self.stop.clicked.connect(self.stopVideo) ################################################## self.next = QtWidgets.QPushButton(self.verticalLayoutWidget) self.next.setObjectName("next") self.horizontalLayout_3.addWidget(self.next) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem1) self.repeat = QtWidgets.QPushButton(self.verticalLayoutWidget) self.repeat.setEnabled(True) self.repeat.setStatusTip("") self.repeat.setObjectName("repeat") self.horizontalLayout_3.addWidget(self.repeat) ################### Repeat Button ################ self.repeat.clicked.connect(self.loopMedia) ################################################## spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem2) self.volume = QtWidgets.QSlider(self.verticalLayoutWidget) self.volume.setOrientation(QtCore.Qt.Vertical) self.volume.setObjectName("volume") self.horizontalLayout_3.addWidget(self.volume) ################### Volume Slider ################ self.volume.setRange(0, 100) self.volume.setValue(100) self.volume.valueChanged.connect(self.volumeControl) ################################################## self.verticalLayout.addLayout(self.horizontalLayout_3) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 700, 21)) self.menubar.setObjectName("menubar") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") MainWindow.setMenuBar(self.menubar) self.actionPlaylist = QtWidgets.QAction(MainWindow) self.actionPlaylist.setObjectName("actionPlaylist") self.actionClose = QtWidgets.QAction(MainWindow) self.actionClose.setObjectName("actionClose") self.actionOpen = QtWidgets.QAction(MainWindow) self.actionOpen.setObjectName("actionOpen") self.menuFile.addAction(self.actionOpen) self.menuFile.addAction(self.actionPlaylist) self.menuFile.addSeparator() self.menuFile.addAction(self.actionClose) self.menubar.addAction(self.menuFile.menuAction()) ################### Open Button ################## self.actionOpen.triggered.connect(self.openFile) ################################################## self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.startTime.setText(_translate("MainWindow", "--:--")) self.endTime.setText(_translate("MainWindow", "--:--")) self.play.setText(_translate("MainWindow", "play")) self.pause.setText(_translate("MainWindow", "pause")) self.prev.setText(_translate("MainWindow", "Previous")) self.stop.setText(_translate("MainWindow", "stop")) self.next.setText(_translate("MainWindow", "Next")) self.repeat.setText(_translate("MainWindow", "Repeat")) self.menuFile.setTitle(_translate("MainWindow", "File")) self.actionPlaylist.setText(_translate("MainWindow", "Playlist")) self.actionClose.setText(_translate("MainWindow", "Quit")) self.actionOpen.setText(_translate("MainWindow", "Open File..."))
class Window(QWidget): _Constant_recognition = 0.8 # конструктор формы def __init__(self): super().__init__() self._Client = Biometric_Client(url='https://expasoft.com', port=2133, subscription_key='9fc9474b4bd16b492276eee41763a3cb') self.imgName = os.getcwd() + "\img\currentPhoto.jpg" self.imgName0 = os.getcwd() + "\img\currentPhoto0.jpg" self.imgName1 = os.getcwd() + "\img\dbPhoto0.jpg" self.setObjectName("FormMain") self.setWindowTitle("БиоСКУД Watchman") self.resize(1024, 600) self.groupBoxCamera = QtWidgets.QGroupBox(self) self.groupBoxCamera.setObjectName("groupBoxCamera") self.groupBoxCamera.setTitle("") self.groupBoxCamera.setGeometry(QtCore.QRect(10, 10, 500, 371)) self.labelCameraTitle = QtWidgets.QLabel(self.groupBoxCamera) self.labelCameraTitle.setObjectName("labelCameraTitle") self.labelCameraTitle.setText("Изображение с камеры") self.labelCameraTitle.setGeometry(QtCore.QRect(160, 10, 181, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelCameraTitle.setFont(font) self.CameraStream = QVideoWidget(self) self.CameraStream.setObjectName("videoCameraStream") self.CameraStream.setGeometry(QtCore.QRect(10, 50, 481, 261)) self.CameraStream.setMinimumSize(QtCore.QSize(241, 0)) self.pushButtonRecognition = QtWidgets.QPushButton(self.groupBoxCamera) self.pushButtonRecognition.setObjectName("pushButtonRecognition") self.pushButtonRecognition.setText("Распознать") self.pushButtonRecognition.setGeometry(QtCore.QRect(10, 310, 481, 51)) self.pushButtonRecognition.clicked.connect(self.identifyPersonBegin) self.pushButtonLog = QtWidgets.QPushButton(self) self.pushButtonLog.setObjectName("pushButtonLog") self.pushButtonLog.setText("Журнал") self.pushButtonLog.setGeometry(QtCore.QRect(10, 460, 121, 61)) self.pushButtonLog.clicked.connect(self.OpenLogFile) self.pushButtonDb = QtWidgets.QPushButton(self) self.pushButtonDb.setObjectName("pushButtonDb") self.pushButtonDb.setText("База данных") self.pushButtonDb.setGeometry(QtCore.QRect(10, 390, 121, 61)) self.pushButtonDb.clicked.connect(self.OpenArchivist) self.groupBoxRecognition = QtWidgets.QGroupBox(self) self.groupBoxRecognition.setObjectName("groupBoxRecognition") self.groupBoxRecognition.setTitle("") self.groupBoxRecognition.setGeometry(QtCore.QRect(520, 10, 500, 581)) self.pushButtonExit = QtWidgets.QPushButton(self) self.pushButtonExit.setObjectName("pushButtonExit") self.pushButtonExit.setText("Выйти") self.pushButtonExit.setGeometry(QtCore.QRect(10, 530, 121, 61)) self.pushButtonExit.clicked.connect(self.ExitProgream) self.labelPersonName = QtWidgets.QLabel(self.groupBoxRecognition) self.labelPersonName.setObjectName("labelPersonName") self.labelPersonName.setText("") self.labelPersonName.setGeometry(QtCore.QRect(20, 320, 271, 31)) font = QtGui.QFont() font.setPointSize(16) self.labelPersonName.setFont(font) self.labelCurrentPhoto = QtWidgets.QLabel(self.groupBoxRecognition) self.labelCurrentPhoto.setObjectName("labelCurrentPhoto") self.labelCurrentPhoto.setText("") self.labelCurrentPhoto.setGeometry(QtCore.QRect(10, 40, 241, 261)) self.labelCurrentPhoto.setMinimumSize(QtCore.QSize(241, 0)) self.labelCurrentPhoto.setAlignment(QtCore.Qt.AlignCenter) self.labelPersonJob = QtWidgets.QLabel(self.groupBoxRecognition) self.labelPersonJob.setObjectName("labelPersonJob") self.labelPersonJob.setText("") self.labelPersonJob.setGeometry(QtCore.QRect(20, 360, 171, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelPersonJob.setFont(font) self.labelPersonInf = QtWidgets.QLabel(self.groupBoxRecognition) self.labelPersonInf.setObjectName("labelPersonJob") self.labelPersonInf.setText("") self.labelPersonInf.setGeometry(QtCore.QRect(20, 400, 171, 21)) font = QtGui.QFont() font.setPointSize(8) self.labelPersonInf.setFont(font) self.labelAccess = QtWidgets.QLabel(self.groupBoxRecognition) self.labelAccess.setObjectName("labelAccess") self.labelAccess.setText("<html><head/><body><p align=\"center\">Допущен</p></body></html>") self.labelAccess.setGeometry(QtCore.QRect(10, 490, 481, 81)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(76, 197, 32)) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) self.labelAccess.setPalette(palette) font = QtGui.QFont() font.setPointSize(16) font.setBold(True) font.setWeight(75) self.labelAccess.setFont(font) self.labelAccess.setAcceptDrops(False) self.labelAccess.setAutoFillBackground(True) self.labelAccess.setFrameShape(QtWidgets.QFrame.NoFrame) self.labelAccess.setFrameShadow(QtWidgets.QFrame.Plain) self.labelAccess.setTextFormat(QtCore.Qt.AutoText) self.labelAccess.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse) self.labelDbPhoto = QtWidgets.QLabel(self.groupBoxRecognition) self.labelDbPhoto.setObjectName("labelDbPhoto") self.labelDbPhoto.setText("") self.labelDbPhoto.setGeometry(QtCore.QRect(250, 40, 241, 261)) self.labelDbPhoto.setMinimumSize(QtCore.QSize(241, 0)) self.labelDbPhoto.setAlignment(QtCore.Qt.AlignCenter) self.labelCurrentPhotoTitle = QtWidgets.QLabel(self.groupBoxRecognition) self.labelCurrentPhotoTitle.setObjectName("labelCurrentPhotoTitle") self.labelCurrentPhotoTitle.setText("Текущее фото") self.labelCurrentPhotoTitle.setGeometry(QtCore.QRect(80, 10, 111, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelCurrentPhotoTitle.setFont(font) self.labelDbPhotoTitle = QtWidgets.QLabel(self.groupBoxRecognition) self.labelDbPhotoTitle.setObjectName("labelDbPhotoTitle") self.labelDbPhotoTitle.setText("Фото в базе") self.labelDbPhotoTitle.setGeometry(QtCore.QRect(320, 10, 111, 21)) font = QtGui.QFont() font.setPointSize(12) self.labelDbPhotoTitle.setFont(font) self.device = QCamera.availableDevices()[0] self.camera = QCamera(self.device) self.camera.setViewfinder(self.CameraStream) self.camera.setCaptureMode(QCamera.CaptureStillImage) self.imageCapture=QCameraImageCapture(self.camera) self.imageCapture.imageSaved.connect(self.identifyPersonEnd) self.camera.start() # идентификация человека (фото) def identifyPersonBegin(self): if self.imageCapture.isReadyForCapture(): #imgName = os.getcwd() + "\img\currentPhoto.jpg" self.camera.searchAndLock() self.imageCapture.capture(self.imgName) self.camera.unlock() # идентификация человека (алгоритм) def identifyPersonEnd(self): self._Client.get_aligned_faces(self.imgName, "img\currentPhoto") id_person = self._Client.identify_profile_by_face(self.imgName0, 1, 0).pop("result")[0] self._Client.get_profile_image(id_person['profile_id'], id_person['image_id'],self.imgName1) self.labelCurrentPhoto.setPixmap(QtGui.QPixmap(self.imgName0)) self.labelDbPhoto.setPixmap(QtGui.QPixmap(self.imgName1)) profile = JsonDataBase.GetInfo(id_person['profile_id']) if profile != None: self.labelPersonName.setText(profile['name']) self.labelPersonJob.setText(profile['tag']) else: self.labelPersonName.setText(profile['']) self.labelPersonJob.setText(profile['']) if id_person['score'] > self._Constant_recognition : palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(255, 22, 46)) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) self.labelAccess.setPalette(palette) self.labelAccess.setText("<html><head/><body><p align=\"center\">Недопущен</p></body></html>") else: palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(76, 197, 32)) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) self.labelAccess.setPalette(palette) self.labelAccess.setText("<html><head/><body><p align=\"center\">Допущен</p></body></html>") self.labelPersonInf.setText('id= ' + str(id_person['profile_id'])+' score= '+str(id_person['score'])) # открыть управление базой данных def OpenArchivist(self): self.archivist = Archivist.Window() self.archivist.show() # открыть файл логов def OpenLogFile(self): os.system("log.txt") # выйти из программы def ExitProgream(self): self.camera.stop() self.close()
class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(706, 493) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/plugins/VideoGis/icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) Form.setWindowIcon(icon) self.verticalLayout_3 = QtWidgets.QVBoxLayout(Form) self.verticalLayout_3.setObjectName("verticalLayout_3") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.pushButton_3 = QtWidgets.QPushButton(Form) font = QtGui.QFont() font.setKerning(True) self.pushButton_3.setFont(font) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/VgisIcon/Hand-icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.pushButton_3.setIcon(icon1) self.pushButton_3.setAutoExclusive(False) self.pushButton_3.setAutoDefault(False) self.pushButton_3.setDefault(False) self.pushButton_3.setFlat(False) self.pushButton_3.setObjectName("pushButton_3") self.horizontalLayout.addWidget(self.pushButton_3) self.toolButton_6 = QtWidgets.QToolButton(Form) icon2 = QtGui.QIcon() icon2.addPixmap( QtGui.QPixmap(":/plugins/VideoGis/iconNewTabEditorConsole.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.toolButton_6.setIcon(icon2) self.toolButton_6.setObjectName("toolButton_6") self.horizontalLayout.addWidget(self.toolButton_6) self.toolButton_7 = QtWidgets.QToolButton(Form) self.toolButton_7.setEnabled(False) self.toolButton_7.setCheckable(True) self.toolButton_7.setObjectName("toolButton_7") self.horizontalLayout.addWidget(self.toolButton_7) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setEnabled(False) self.pushButton.setCheckable(True) self.pushButton.setObjectName("pushButton") self.horizontalLayout.addWidget(self.pushButton) self.label_2 = QtWidgets.QLabel(Form) self.label_2.setEnabled(False) self.label_2.setObjectName("label_2") self.horizontalLayout.addWidget(self.label_2) self.spinBox = QtWidgets.QSpinBox(Form) self.spinBox.setEnabled(False) self.spinBox.setMinimum(1) self.spinBox.setSingleStep(10) self.spinBox.setProperty("value", 25) self.spinBox.setObjectName("spinBox") self.horizontalLayout.addWidget(self.spinBox) spacerItem = QtWidgets.QSpacerItem(23, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.toolButton_4 = QtWidgets.QToolButton(Form) self.toolButton_4.setObjectName("toolButton_4") self.horizontalLayout.addWidget(self.toolButton_4) self.toolButton_5 = QtWidgets.QToolButton(Form) self.toolButton_5.setObjectName("toolButton_5") self.horizontalLayout.addWidget(self.toolButton_5) self.verticalLayout_3.addLayout(self.horizontalLayout) self.dockWidget_2 = QtWidgets.QDockWidget(Form) self.dockWidget_2.setFeatures( QtWidgets.QDockWidget.NoDockWidgetFeatures) self.dockWidget_2.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) self.dockWidget_2.setObjectName("dockWidget_2") self.dockWidgetContents_7 = QtWidgets.QWidget() self.dockWidgetContents_7.setObjectName("dockWidgetContents_7") self.gridLayout_2 = QtWidgets.QGridLayout(self.dockWidgetContents_7) self.gridLayout_2.setObjectName("gridLayout_2") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.video_frame = QVideoWidget(Form) p = self.video_frame.palette() p.setColor(QtGui.QPalette.Window, QtCore.Qt.black) self.video_frame.setPalette(p) self.video_frame.setAttribute(QtCore.Qt.WA_OpaquePaintEvent) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.video_frame.sizePolicy().hasHeightForWidth()) self.video_frame.setSizePolicy(sizePolicy) self.video_frame.setMinimumSize(QtCore.QSize(200, 200)) self.video_frame.setStyleSheet("background-color: rgb(0, 0, 0);") self.video_frame.setObjectName("video_frame") self.verticalLayout.addWidget(self.video_frame) self.horizontalSlider = QtWidgets.QSlider(self.dockWidgetContents_7) self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.horizontalSlider.setObjectName("horizontalSlider") self.verticalLayout.addWidget(self.horizontalSlider) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") spacerItem1 = QtWidgets.QSpacerItem(98, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem1) self.toolButton_11 = QtWidgets.QToolButton(self.dockWidgetContents_7) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionArrowLeft.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.toolButton_11.setIcon(icon3) self.toolButton_11.setObjectName("toolButton_11") self.horizontalLayout_3.addWidget(self.toolButton_11) self.SkipBacktoolButton_8 = QtWidgets.QToolButton( self.dockWidgetContents_7) self.SkipBacktoolButton_8.setStyleSheet("") icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionAtlasPrev.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.SkipBacktoolButton_8.setIcon(icon4) self.SkipBacktoolButton_8.setObjectName("SkipBacktoolButton_8") self.horizontalLayout_3.addWidget(self.SkipBacktoolButton_8) self.playButton = QtWidgets.QToolButton(self.dockWidgetContents_7) self.playButton.setObjectName("playButton") self.horizontalLayout_3.addWidget(self.playButton) self.muteButton = QtWidgets.QToolButton(self.dockWidgetContents_7) self.muteButton.setText("") self.muteButton.setObjectName("muteButton") self.horizontalLayout_3.addWidget(self.muteButton) self.replayPosition_label = QtWidgets.QLabel(self.dockWidgetContents_7) self.replayPosition_label.setObjectName("replayPosition_label") self.horizontalLayout_3.addWidget(self.replayPosition_label) self.SkipFortoolButton_9 = QtWidgets.QToolButton( self.dockWidgetContents_7) self.SkipFortoolButton_9.setStyleSheet("") icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionAtlasNext.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.SkipFortoolButton_9.setIcon(icon5) self.SkipFortoolButton_9.setObjectName("SkipFortoolButton_9") self.horizontalLayout_3.addWidget(self.SkipFortoolButton_9) self.toolButton_12 = QtWidgets.QToolButton(self.dockWidgetContents_7) icon6 = QtGui.QIcon() icon6.addPixmap(QtGui.QPixmap(":/VgisIcon/mActionArrowRight.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On) self.toolButton_12.setIcon(icon6) self.toolButton_12.setObjectName("toolButton_12") self.horizontalLayout_3.addWidget(self.toolButton_12) spacerItem2 = QtWidgets.QSpacerItem(98, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem2) self.lcdNumber = QtWidgets.QLCDNumber(self.dockWidgetContents_7) self.lcdNumber.setObjectName("lcdNumber") self.horizontalLayout_3.addWidget(self.lcdNumber) self.verticalLayout.addLayout(self.horizontalLayout_3) self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1) self.dockWidget_2.setWidget(self.dockWidgetContents_7) self.verticalLayout_3.addWidget(self.dockWidget_2) self.dockWidget_4 = QtWidgets.QDockWidget(Form) self.dockWidget_4.setMaximumSize(QtCore.QSize(524287, 121)) self.dockWidget_4.setFeatures( QtWidgets.QDockWidget.NoDockWidgetFeatures) self.dockWidget_4.setAllowedAreas(QtCore.Qt.BottomDockWidgetArea) self.dockWidget_4.setObjectName("dockWidget_4") self.dockWidgetContents_6 = QtWidgets.QWidget() self.dockWidgetContents_6.setObjectName("dockWidgetContents_6") self.verticalLayout_2 = QtWidgets.QVBoxLayout( self.dockWidgetContents_6) self.verticalLayout_2.setObjectName("verticalLayout_2") self.label = QtWidgets.QLabel(self.dockWidgetContents_6) self.label.setObjectName("label") self.verticalLayout_2.addWidget(self.label) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setSizeConstraint( QtWidgets.QLayout.SetFixedSize) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.pushButtonCutA_6 = QtWidgets.QPushButton( self.dockWidgetContents_6) self.pushButtonCutA_6.setEnabled(True) self.pushButtonCutA_6.setObjectName("pushButtonCutA_6") self.horizontalLayout_2.addWidget(self.pushButtonCutA_6) self.pushButtonCutB_6 = QtWidgets.QPushButton( self.dockWidgetContents_6) self.pushButtonCutB_6.setObjectName("pushButtonCutB_6") self.horizontalLayout_2.addWidget(self.pushButtonCutB_6) self.label_7 = QtWidgets.QLabel(self.dockWidgetContents_6) self.label_7.setObjectName("label_7") self.horizontalLayout_2.addWidget(self.label_7) self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox( self.dockWidgetContents_6) self.doubleSpinBox_2.setObjectName("doubleSpinBox_2") self.horizontalLayout_2.addWidget(self.doubleSpinBox_2) self.comboBox_6 = QtWidgets.QComboBox(self.dockWidgetContents_6) self.comboBox_6.setObjectName("comboBox_6") self.comboBox_6.addItem("") self.comboBox_6.addItem("") self.horizontalLayout_2.addWidget(self.comboBox_6) self.pushButton_5 = QtWidgets.QPushButton(self.dockWidgetContents_6) self.pushButton_5.setObjectName("pushButton_5") self.horizontalLayout_2.addWidget(self.pushButton_5) self.pushButtonCut_2 = QtWidgets.QPushButton(self.dockWidgetContents_6) self.pushButtonCut_2.setObjectName("pushButtonCut_2") self.horizontalLayout_2.addWidget(self.pushButtonCut_2) self.verticalLayout_2.addLayout(self.horizontalLayout_2) self.progressBar = QtWidgets.QProgressBar(self.dockWidgetContents_6) self.progressBar.setProperty("value", 24) self.progressBar.setObjectName("progressBar") self.verticalLayout_2.addWidget(self.progressBar) self.dockWidget_4.setWidget(self.dockWidgetContents_6) self.verticalLayout_3.addWidget(self.dockWidget_4) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Video UAV Tracker - Player")) self.pushButton_3.setToolTip( _translate( "Form", "<html><head/><body><p>Move along Video directly clicking on gps track</p></body></html>" )) self.pushButton_3.setText(_translate("Form", "MapTool ")) self.label_2.setText(_translate("Form", "Overlap %")) self.toolButton_6.setToolTip( _translate("Form", "<html><head/><body><p>Add point</p></body></html>")) self.toolButton_6.setText(_translate("Form", "o")) self.toolButton_4.setToolTip( _translate( "Form", "<html><head/><body><p>Enable extract frames toolbox</p><p><br/></p></body></html>" )) self.toolButton_4.setText(_translate("Form", "Extract frames")) self.toolButton_5.setText(_translate("Form", "Close")) self.toolButton_11.setText(_translate("Form", "<<")) self.SkipBacktoolButton_8.setText(_translate("Form", "<")) self.playButton.setText(_translate("Form", "> / ||")) self.replayPosition_label.setText(_translate("Form", "-:- / -:-")) self.SkipFortoolButton_9.setText(_translate("Form", ">")) self.toolButton_12.setText(_translate("Form", ">>")) self.label.setText(_translate("Form", "Export Frames Tool")) self.pushButtonCutA_6.setToolTip( _translate( "Form", "<html><head/><body><p>Export from actual Video Frame</p></body></html>" )) self.pushButtonCutA_6.setText(_translate("Form", "From A")) self.pushButtonCutB_6.setToolTip( _translate( "Form", "<html><head/><body><p>Export to actual Video Frame</p></body></html>" )) self.pushButtonCutB_6.setText(_translate("Form", "To B")) self.label_7.setText(_translate("Form", "Pick one frame every")) self.comboBox_6.setItemText(0, _translate("Form", "meters")) self.comboBox_6.setItemText(1, _translate("Form", "seconds")) self.pushButton_5.setText(_translate("Form", "Cancel")) self.pushButtonCut_2.setText(_translate("Form", "Extract!")) self.toolButton_7.setText(_translate("Form", "3D")) self.pushButton.setText(_translate("Form", "Create Mosaic"))
class FFWindow(QtWidgets.QWidget): def __init__(self, movie_dir, pos_snapshot_dir, neg_snapshot_dir): super().__init__() self.media_player = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.movie_dir = movie_dir video_list = glob.glob(os.path.join(self.movie_dir, "*.mp4")) print("{} movies found".format(len(video_list))) # We want to be able to cycle through them self.video_files = itertools.cycle(iter(video_list)) # Check the output directories exist self.pos_snapshot_dir = pos_snapshot_dir if not os.path.exists(self.pos_snapshot_dir): os.makedirs(self.pos_snapshot_dir) self.neg_snapshot_dir = neg_snapshot_dir if not os.path.exists(self.neg_snapshot_dir): os.makedirs(self.neg_snapshot_dir) self.setWindowTitle('FrameFinder') self.video_widget = QVideoWidget() # self.video_widget.setFixedSize(640, 360) # self.video_widget. self.video_widget.setMinimumSize(640, 360) self.video_widget.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) self.media_player.setVideoOutput(self.video_widget) self.position_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) self.position_slider.setRange(0, 0) self.position_slider.sliderMoved.connect(self.set_position) self.errorLabel = QtWidgets.QLabel() # self.errorLabel.setSizePolicy(QtWidgets.QSizePolicy.Preferred, # QtWidgets.QSizePolicy.Maximum) self.fileLabel = QtWidgets.QLabel() self.rewind_but = QtWidgets.QPushButton() self.rewind_but.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_ArrowLeft)) self.rewind_but.setText("Normal [A]") self.rewind_but.clicked.connect(self.rewind) self.slow_rewind_but = QtWidgets.QPushButton() self.slow_rewind_but.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_ArrowLeft)) self.slow_rewind_but.setText("Slow [S]") self.slow_rewind_but.clicked.connect(self.slow_rewind) self.play_but = QtWidgets.QPushButton() self.play_but.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_MediaPlay)) self.play_but.setText("[D]") self.play_but.clicked.connect(self.playtoggle) self.slow_forward_but = QtWidgets.QPushButton() self.slow_forward_but.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_ArrowRight)) self.slow_forward_but.setText("Slow [F]") self.slow_forward_but.clicked.connect(self.slow_forward) self.forward_but = QtWidgets.QPushButton() self.forward_but.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_ArrowRight)) self.forward_but.setText("Normal [G]") self.forward_but.clicked.connect(self.forward) self.fast_forward_but = QtWidgets.QPushButton() self.fast_forward_but.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_ArrowRight)) self.fast_forward_but.setText("Fast [H]") self.fast_forward_but.clicked.connect(self.fast_forward) self.pos_snapshot_but = QtWidgets.QPushButton() self.pos_snapshot_but.setText("Snapshot Positive [P]") self.pos_snapshot_but.clicked.connect(self.pos_snapshot) self.neg_snapshot_but = QtWidgets.QPushButton() self.neg_snapshot_but.setText("Snapshot Negative [O]") self.neg_snapshot_but.clicked.connect(self.neg_snapshot) self.next_but = QtWidgets.QPushButton() self.next_but.setText("Next movie [N]") self.next_but.clicked.connect(self.next_video) video_vbox = QtWidgets.QVBoxLayout() video_vbox.addWidget(self.video_widget) video_vbox.addWidget(self.position_slider) control_box = QtWidgets.QHBoxLayout() control_box.addWidget(self.rewind_but) control_box.addWidget(self.slow_rewind_but) control_box.addWidget(self.play_but) control_box.addWidget(self.slow_forward_but) control_box.addWidget(self.forward_but) control_box.addWidget(self.fast_forward_but) video_vbox.addLayout(control_box) video_vbox.addWidget(self.errorLabel) video_vbox.addWidget(self.fileLabel) file_box = QtWidgets.QHBoxLayout() file_box.addWidget(self.pos_snapshot_but) file_box.addWidget(self.neg_snapshot_but) file_box.addWidget(self.next_but) v_box = QtWidgets.QVBoxLayout() # v_box.addStretch() v_box.addLayout(video_vbox) v_box.addLayout(file_box) # v_box.addStretch() self.setLayout(v_box) self.media_player.stateChanged.connect(self.status_changed) # self.media_player.availabilityChanged.connect(self.status_changed) self.media_player.positionChanged.connect(self.position_changed) self.media_player.durationChanged.connect(self.duration_changed) self.media_player.error.connect(self.handleError) self.next_video() # Set up some keyboard shortcuts shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("a"), self) shortcut.activated.connect(self.rewind_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("s"), self) shortcut.activated.connect(self.slow_rewind_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("d"), self) shortcut.activated.connect(self.play_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(" "), self) shortcut.activated.connect(self.play_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("f"), self) shortcut.activated.connect(self.slow_forward_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("g"), self) shortcut.activated.connect(self.forward_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("h"), self) shortcut.activated.connect(self.fast_forward_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("p"), self) shortcut.activated.connect(self.pos_snapshot_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("o"), self) shortcut.activated.connect(self.neg_snapshot_but.animateClick) shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("n"), self) shortcut.activated.connect(self.next_but.animateClick) def playtoggle(self): if self.media_player.state() == QMediaPlayer.PlayingState: self.pause() else: self.play() def pause(self): self.media_player.pause() def play(self): self.media_player.play() # This is a nasty hack. The video tends to zoom to 1:1 # when you play, but rescales itself when you resize the window. # Faking a window resize is the only way I could find to fix the zoom. size = self.size() self.resize(size.width() + 1, size.height() + 1) self.resize(size.width(), size.height()) def rewind(self): self.media_player.setPlaybackRate(-1) self.errorLabel.setText("Rewind 1x") self.play() def slow_rewind(self): self.media_player.setPlaybackRate(-0.25) self.errorLabel.setText("Rewind 0.25x") self.play() def slow_forward(self): self.media_player.setPlaybackRate(0.25) self.errorLabel.setText("Forward 0.25x") self.play() def forward(self): self.media_player.setPlaybackRate(1.0) self.errorLabel.setText("Forward 1x") self.play() def fast_forward(self): self.media_player.setPlaybackRate(2.0) self.errorLabel.setText("Forward 2x") self.play() def status_changed(self): if self.media_player.state() == QMediaPlayer.PlayingState: self.play_but.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_MediaPause)) else: self.play_but.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_MediaPlay)) self.play_but.repaint() # print ("Status", self.media_player.mediaStatus()) def position_changed(self, position): # print("Position changed to", position) self.position_slider.setValue(position) def duration_changed(self, duration): print("Duration changed to", duration) self.position_slider.setRange(0, duration) def set_position(self, position): self.media_player.setPosition(position) def pos_snapshot(self): self.snapshot(self.pos_snapshot_dir) def neg_snapshot(self): self.snapshot(self.neg_snapshot_dir) def snapshot(self, snap_dir): video_path = self.media.canonicalUrl().path() position = self.media_player.position() video_file, extension = os.path.splitext(os.path.basename(video_path)) snapshot_file = os.path.join(snap_dir, "{}_{}.jpg".format(video_file, position)) # Use ffmpeg because it's not clear how to get # the frame back from the video surface cmd = [ "ffmpeg", "-ss", str(position / 1000), "-i", video_path, "-frames", "1", snapshot_file ] print(" ".join(cmd)) retcode = subprocess.call(cmd) if retcode == 0: self.errorLabel.setText("Saved {}".format(snapshot_file)) else: self.errorLabel.setText("Error running ffmpeg") def next_video(self): # Display the next file if there is one try: self.errorLabel.clear() next_video = os.path.join(os.getcwd(), next(self.video_files)) print(next_video) self.pause() self.media = QMediaContent(QtCore.QUrl.fromLocalFile(next_video)) self.media_player.setMedia(self.media) self.fileLabel.setText(next_video) self.play() except StopIteration: pass def handleError(self): self.errorLabel.setText("Error: " + self.media_player.errorString())