Example #1
0
    def __init__(self, streams):
        self.streams = streams
        self.starting_player_indices = set(range(len(self.streams)))
        super().__init__()

        self.setAttribute(Qt.WA_QuitOnClose)
        self.setWindowFlags(Qt.FramelessWindowHint)

        palette = QPalette()
        palette.setColor(QPalette.Background, Qt.white)
        self.setPalette(palette)

        self.layout = QStackedLayout()
        self.setLayout(self.layout)

        label = QLabel()
        label.setAlignment(Qt.AlignCenter)
        self.loading_gif = QMovie("loading.gif")
        label.setMovie(self.loading_gif)
        self.layout.insertWidget(0, label)

        self.streams_ready.connect(self.showStartingScreen)
        self.players = []
        for stream in self.streams:
            player = QMediaPlayer()
            player.setMedia(QMediaContent(stream))
            player.mediaStatusChanged.connect(self.changedMediaStatus)
            player.play()
            self.players.append(player)

        grid_layout = QGridLayout()
        grid_layout.setSpacing(0)
        grid_layout.setContentsMargins(0, 0, 0, 0)
        self.grid_widget = QWidget()
        self.grid_widget.setLayout(grid_layout)

        i = 0
        self.grid_widgets = []
        for row in range(2):
            for column in range(2):
                video_item = QGraphicsVideoItem()
                self.players[i].setVideoOutput(video_item)
                video_widget = NumberedVideoWidget(i, video_item)
                self.grid_widgets.append(video_widget)
                grid_layout.addWidget(video_widget, row, column)
                i += 1
        self.layout.insertWidget(1, self.grid_widget)

        video_item = QGraphicsVideoItem()
        video_widget = NumberedVideoWidget(4, video_item)
        self.players[4].setVideoOutput(video_item)
        self.layout.insertWidget(2, video_widget)

        self.loading_gif.start()
 def __init__(self):
     super(Video, self).__init__()
     self.resize(1920, 1080)
     # ITEM
     self._item = QGraphicsVideoItem()
     self._textItem = QGraphicsTextItem()
     self._view = QGraphicsView()
     self._scene = QGraphicsScene()
     self._view.resize(1920, 1080)
     self._view.setScene(self._scene)
     self._scene.addItem(self._item)
     self._scene.addItem(self._textItem)
     self._textItem.setPlainText('SRT TEXT')
     self._textItem.setDefaultTextColor(Qt.red)
     font = self._textItem.font()
     font.setPixelSize(50)
     self._textItem.setFont(font)
     self._view.show()
     self._item.setSize(QSizeF(1920, 1080))
     self._player = QMediaPlayer(self)
     self._player.setMedia(
         QMediaContent(
             QUrl.fromLocalFile(
                 '/Users/huangkai/Documents/PycharmProjects/AllTest/Qt插入背景/AddVideos/Videos/yellow.mov'
             )))
     self._player.setVideoOutput(self._item)
     self._player.play()
     self.setCentralWidget(self._view)
     self._item.setPos(400, 500)
     # BUTTON
     self._btn = QPushButton(self)
     self._btn.resize(100, 50)
     self._btn.move(500, 500)
     self._btn.setText('test')
     self._btn.clicked.connect(self._change_text)
    def __init__(self, background_color):
        QWidget.__init__(self)

        self.scene = QGraphicsScene(self)
        self.scene.setBackgroundBrush(QBrush(background_color))
        self.graphics_view = QGraphicsView(self.scene)
        self.graphics_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setFrameStyle(0)
        self.graphics_view.setStyleSheet(
            "QGraphicsView {background: transparent; border: 3px; outline: none;}"
        )
        self.graphics_view.scale(-1,
                                 1)  # this make live video from camero mirror.
        self.video_item = QGraphicsVideoItem()
        self.scene.addItem(self.video_item)

        self.layout = QVBoxLayout(self)
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.layout.addWidget(self.graphics_view)

        self.available_cameras = QCameraInfo.availableCameras()

        # Set the default camera.
        self.select_camera(0)
Example #4
0
    def __init__(self):
        super(VideoSortApp, self).__init__()
        self.setupUi(self)
        self.filename = None
        self.directory = None
        self.sort.setEnabled(False)
        self.fileOpen.clicked.connect(self.fileDialog)
        self.dirOpen.clicked.connect(self.folderDialog)
        self.sort.clicked.connect(self.sortVideo)
        self.results.setViewMode(self.results.IconMode)
        self.results.setResizeMode(self.results.Adjust)
        self.features = []
        self.sorted = None

        #player properties
        self.player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.playlist = QMediaPlaylist(self.player)
        self.videoItem = QGraphicsVideoItem()
        self.videoItem.setSize(QtCore.QSizeF(640, 480))
        scene = QGraphicsScene(self)
        scene.addItem(self.videoItem)
        self.graphicsView.setScene(scene)
        self.player.setVideoOutput(self.videoItem)
        self.graphicsView.resize(640,480)
        self.graphicsView.show()
        self.results.itemDoubleClicked.connect(self.seekVideo)
        self.videoLoaded = False
Example #5
0
    def init_ui(self):
        self.main_layout = QtWidgets.QVBoxLayout()
        self.main_layout.setContentsMargins(0, 0, 0, 0)
        self.setFixedHeight(200)

        self.now_playing_visual = NowPlayingVisual(self._media_player, self)
        self.main_layout.addWidget(self.now_playing_visual)

        self.setBackgroundBrush(QtGui.QBrush(QtCore.Qt.black))

        self.video_item = QGraphicsVideoItem()
        self.video_item.setGraphicsEffect(QtWidgets.QGraphicsBlurEffect())
        self.video_item.setAspectRatioMode(
            QtCore.Qt.KeepAspectRatioByExpanding)
        self._media_player.setVideoOutput(self.video_item)
        self.scene().addItem(self.video_item)

        self.overlay = QtWidgets.QGraphicsRectItem(0, 0, 0, 0, self.video_item)
        self.overlay.setBrush(QtGui.QBrush(QtCore.Qt.black))
        self.set_opacity(0.8)

        self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)

        self.setStyleSheet('border: 0px;')

        self.setLayout(self.main_layout)
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.videoItem = QGraphicsVideoItem()
        self.videoItem.setPos(0, 0)
        self.videoItem.nativeSizeChanged.connect(self.videoSizeChanged)
        self.addItem(self.videoItem)

        self.rectangle = QGraphicsRectItem()
        self.rectangle.setPen(QColor(0, 122, 217))
        self.addItem(self.rectangle)
Example #7
0
    def __init__(self, *args, **kwargs):
        QtWidgets.QWidget.__init__(self, *args, **kwargs)
        #####################       eye tracking        #####################
        self.audience_eye_tracking_dic = {}
        self.eye_track_dic = {}
        self.elements = {}
        self.eye_track_frame_rate = 10
        self.trial_lapse = 2000
        self.eye_tracking_width = 1024  ##eye tracking hardware resolution
        self.eye_tracking_height = 768  ##eye tracking hardware resolution
        self.view_width = 1184  ##QGraphicsView resolution
        self.view_height = 666  ##QGraphcsView
        #####################       eye tracking        #####################

        ####### DO NOT TOUCH #######
        self.loaded = 0
        #self.tl = timeline.timeline(self)
        #self.tl = timeline.timeline(self)
        #self.layout.addChildWidget(self.tl)
        # player.setInterval(self.eye_track_frame_rate)
        # timer.timeout.connect(self.draw_eye_tracking)
        ####### DO NOT TOUCH #######

        ###############################
        self.view = QtWidgets.QGraphicsView()
        self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.view.setViewport(PyQt5.QtOpenGL.QGLWidget())
        self.view.setFixedSize(self.view_width + 2, self.view_height + 2)
        self.view.setGeometry(0, 0, self.view_width, self.view_height)
        self.videoItem = QGraphicsVideoItem()

        # MUST setsize that is half the size of the GraphicsView
        # Most likey a bug in Qt's implementation on Mac OS X
        self.videoItem.setSize(
            QtCore.QSizeF(self.view_width / 2, self.view_height / 2))

        self.player = QM.QMediaPlayer()
        self.player.setVideoOutput(self.videoItem)

        self.scene = QtWidgets.QGraphicsScene()
        self.scene.addItem(self.videoItem)

        self.view.setScene(self.scene)
        self.scene.setSceneRect(0, 0, self.view_width, self.view_height)
        self.videoItem.setPos(0, 0)
        ###############################

        self.layout = QtWidgets.QVBoxLayout(self)
        self.layout.addWidget(self.view)
        self.createUI()
        self.view.show()
Example #8
0
    def init_player(self):
        if not hasattr(self, 'player1'):
            # the first video player
            self.videoitem1 = QGraphicsVideoItem()
            self.player1 = QMediaPlayer(self)
            self.player1.setVideoOutput(self.videoitem1)
            # the second video player
            self.videoitem2 = QGraphicsVideoItem()
            self.player2 = QMediaPlayer(self)
            self.player2.setVideoOutput(self.videoitem2)

            # signal-slot
            self.player1.stateChanged.connect(self.mediaStateChanged)
            self.player1.positionChanged.connect(self.positionChanged)
            self.player1.durationChanged.connect(self.durationChanged)

            # add to scene
            self.scene_text = self.qscenes[0].addText('')
            self.qscenes[0].addItem(self.videoitem1)
            self.qscenes[0].addItem(self.videoitem2)

            self.flag_front_player = '1'
            self.pause_pos = 0
Example #9
0
    def __init__(
        self,
        camera: Camera,
        is_mirrored: bool,
        mask: Mask,
        parent=None,
    ):
        super().__init__(parent=parent)
        self._is_mirrored = is_mirrored
        self._mask = mask

        self._state = LiveFeedWidget._State.Init

        self._video_item = QGraphicsVideoItem()
        # I think this is the size in pixels on the screen?
        self._video_item.setSize(QSizeF(self._mask.size))
        # TODO I think this will not draw centrally?  If not should fix this
        self._video_item.setAspectRatioMode(Qt.KeepAspectRatioByExpanding)
        if self._is_mirrored:
            self._video_item.setTransform(QTransform().scale(-1, 1))

        self.setMask(self._mask.clip_region)

        self._scene: OverlayTextGraphicsScene = OverlayTextGraphicsScene(
            self._mask.size)
        self._scene.addItem(self._video_item)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setScene(self._scene)

        # Setup camera
        #
        self._camera = camera
        self._camera.setViewfinder(self._video_item)
        self._camera.setCaptureMode(QCamera.CaptureStillImage)
        self._camera.error.connect(self._on_camera_error)
        self._camera.statusChanged.connect(self._on_camera_status_changed)

        # Setup capture
        #
        self._capture = QCameraImageCapture(self._camera)
        self._capture.setCaptureDestination(
            QCameraImageCapture.CaptureToBuffer)
        self._capture.imageCaptured.connect(self._image_captured)
        self._capture.error.connect(self._on_capture_error)

        self._camera.start()

        logger.info("Camera started")
Example #10
0
    def __init__(self, stimulusWindow):
        super(MediaWindow, self).__init__()
        self.setFocusPolicy(Qt.StrongFocus)
        self.setStyleSheet('''
            QWidget{
                border-style: none;
            }
            ''')

        #self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)

        self.showFullScreen()

        self.stimulusWindow = stimulusWindow
        stimulusWindow.showFullScreen()

        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)

        self.videoProbe = QVideoProbe()
        self.videoProbe.videoFrameProbed.connect(self.onVideoFrame)
        self.videoProbe.setSource(self.mediaPlayer)

        self.graphicsVideoItem = QGraphicsVideoItem()

        self.graphicsScene = QGraphicsScene()
        self.graphicsView = QGraphicsView(self.graphicsScene)
        geom = stimulusWindow.geometry()
        self.graphicsView.setFixedSize(geom.width(), geom.height())
        self.graphicsScene.addItem(self.graphicsVideoItem)

        self.graphicsView.setViewport(self.stimulusWindow)
        self.graphicsView.setViewportUpdateMode(
            QGraphicsView.FullViewportUpdate)

        print(self.graphicsView.contentsRect())

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.alignmentRect
        layout.addWidget(self.graphicsView)

        self.setLayout(layout)
        self.graphicsView.setFocusPolicy(Qt.NoFocus)
        self.graphicsView.viewport().installEventFilter(self)
        self.hide()
        #self.showFullScreen()

        self.ticker = None
Example #11
0
 def __init__(self, width: int, height: int, parent=None):
     super(VideoPlayer, self).__init__(parent)
     video_item = QGraphicsVideoItem()
     video_item.setAspectRatioMode(Qt.IgnoreAspectRatio)
     video_item.setSize(QSizeF(width, height))
     scene = QGraphicsScene(self)
     scene.addItem(video_item)
     graphics_view = QGraphicsView(scene)
     graphics_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
     graphics_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
     layout = QVBoxLayout()
     layout.addWidget(graphics_view)
     self.setLayout(layout)
     self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
     self.mediaPlayer.setVideoOutput(video_item)
     self.mediaPlayer.setVolume(0)
Example #12
0
    def __init__(self, parent=None):
        super(VideoPlayer, self).__init__(parent)

        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)

        self.videoItem = QGraphicsVideoItem()
        self.videoItem.setSize(QSizeF(640, 480))

        scene = QGraphicsScene(self)
        graphicsView = QGraphicsView(scene)

        scene.addItem(self.videoItem)

        rotateSlider = QSlider(Qt.Horizontal)
        rotateSlider.setRange(-180, 180)
        rotateSlider.setValue(0)
        rotateSlider.valueChanged.connect(self.rotateVideo)

        openButton = QPushButton("Open...")
        openButton.clicked.connect(self.openFile)

        self.playButton = QPushButton()
        self.playButton.setEnabled(False)
        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)

        controlLayout = QHBoxLayout()
        controlLayout.setContentsMargins(0, 0, 0, 0)
        controlLayout.addWidget(openButton)
        controlLayout.addWidget(self.playButton)
        controlLayout.addWidget(self.positionSlider)

        layout = QVBoxLayout()
        layout.addWidget(graphicsView)
        layout.addWidget(rotateSlider)
        layout.addLayout(controlLayout)

        self.setLayout(layout)

        self.mediaPlayer.setVideoOutput(self.videoItem)
        self.mediaPlayer.stateChanged.connect(self.mediaStateChanged)
        self.mediaPlayer.positionChanged.connect(self.positionChanged)
        self.mediaPlayer.durationChanged.connect(self.durationChanged)
Example #13
0
 def __init__(self):
     super(Video, self).__init__()
     self.resize(1920, 1080)
     self._item = QGraphicsVideoItem()
     self._view = QGraphicsView()
     self._scene = QGraphicsScene()
     self._view.resize(1920, 1080)
     self._view.setScene(self._scene)
     self._scene.addItem(self._item)
     self._view.show()
     self._item.setSize(QSizeF(1920, 1080))
     self._player = QMediaPlayer(self)
     self._player.setMedia(
         QMediaContent(
             QUrl.fromLocalFile(
                 '/Users/huangkai/Documents/PycharmProjects/AllTest/Qt插入背景/AddVideos/Videos/yellow.mov'
             )))
     self._player.setVideoOutput(self._item)
     self._player.play()
     self.setCentralWidget(self._view)
Example #14
0
    def __init__(self, parent=None):
        super().__init__(parent)  #调用父类构造函数,创建窗体
        self.ui = Ui_MainWindow()  #创建UI对象
        self.ui.setupUi(self)  #构造UI界面

        self.player = QMediaPlayer(self)  #创建视频播放器
        self.player.setNotifyInterval(1000)  #信息更新周期, ms

        scene = QGraphicsScene(self)
        self.ui.graphicsView.setScene(scene)

        self.videoItem = QGraphicsVideoItem()  #视频显示画面
        self.videoItem.setSize(QSizeF(320, 220))
        self.videoItem.setFlag(QGraphicsItem.ItemIsMovable)
        self.videoItem.setFlag(QGraphicsItem.ItemIsSelectable)
        self.videoItem.setFlag(QGraphicsItem.ItemIsFocusable)

        scene.addItem(self.videoItem)
        self.player.setVideoOutput(self.videoItem)  #设置视频显示图形项

        self.textItem = QGraphicsTextItem("面朝大海,春暖花开")  #弹幕文字
        font = self.textItem.font()
        font.setPointSize(20)
        self.textItem.setFont(font)
        self.textItem.setDefaultTextColor(Qt.red)
        self.textItem.setPos(100, 220)
        self.textItem.setFlag(QGraphicsItem.ItemIsMovable)
        self.textItem.setFlag(QGraphicsItem.ItemIsSelectable)
        self.textItem.setFlag(QGraphicsItem.ItemIsFocusable)
        scene.addItem(self.textItem)

        self.ui.btnText.setCheckable(True)  #弹幕文字按钮
        self.ui.btnText.setChecked(True)

        self.__duration = ""
        self.__curPos = ""
        self.player.stateChanged.connect(self.do_stateChanged)
        self.player.positionChanged.connect(self.do_positionChanged)
        self.player.durationChanged.connect(self.do_durationChanged)
    def __init__(self, parent=None):
        super(VideoPlayerWidget, self).__init__(parent)

        self.scene = QGraphicsScene(self)
        self.scene.setBackgroundBrush(QBrush(QColor(0, 0, 0, 255)))
        self.graphics_view = QGraphicsView(self.scene)
        self.graphics_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setFrameStyle(0)
        self.graphics_view.setStyleSheet("QGraphicsView {background: transparent; border: 3px; outline: none;}")
        self.video_item = QGraphicsVideoItem()
        self.scene.addItem(self.video_item)

        self.layout = QVBoxLayout(self)
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.layout.addWidget(self.graphics_view)

        self.media_player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.media_player.setVideoOutput(self.video_item)

        self.video_need_replay = False
        self.video_seek_durcation = 3000 # in milliseconds
Example #16
0
    def setupUi(self, Form):
        self.sizeMonitor = [GetSystemMetrics(0), GetSystemMetrics(1)]
        self.setMouseTracking(True)
        self.form = Form
        Form.setObjectName("Form")
        Form.resize(631, 406)

        self.oldHighLine = None
        self.oldIndexSub = 0
        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.mediaPlayer.positionChanged.connect(
            self.positionChanged)  # bắt frame video thay đổi
        self.mediaPlayer.durationChanged.connect(
            self.durationChanged)  # bắt thời lượng video
        # Hàm này chỉ chạy có 1 lần !!!

        # Create Slider tạo thanh trượt video
        #self.positionSlider = QSlider(Qt.Horizontal)
        self.positionSlider = Slider(Qt.Horizontal)
        # truyền đối số Qt.Horizontal không dùng hàm __init__ nó sẽ kế thừa trực tiếp từ Horizontal
        # nếu dùng hàm __init__ nó sẽ ko kế thừa được mà chỉ tham chiếu đến lớp horizontal !!!
        self.positionSlider.parent = self
        self.positionSlider.setRange(0, 0)
        self.positionSlider.sliderMoved.connect(self.sliderMoved)

        # set event notify 500 millisecond
        QMediaObject.setNotifyInterval(self.mediaPlayer, 500)

        # Create Menubar
        self.menubar = QtWidgets.QMenuBar(Form)
        self.menubar.setFixedHeight(25)

        self.menuOpen = QtWidgets.QMenu(self.menubar)
        self.menuOpen.setObjectName('menuOpen')

        self.menuOption = QtWidgets.QMenu(self.menubar)
        self.menuOption.setObjectName('menuOption')
        self.actionReload = QtWidgets.QAction(Form)
        self.actionReload.setObjectName('actionReload')
        self.actionReload.triggered.connect(self.reloadVideoAndSub)
        self.menuOption.addAction(self.actionReload)

        self.actionOpenVideo = QtWidgets.QAction(Form)
        self.actionOpenVideo.setObjectName('openvideo')
        self.actionOpenSub1 = QtWidgets.QAction(Form)
        self.actionOpenSub1.setObjectName('openSub1')
        self.actionOpenSub1.triggered.connect(self.openFile('Open Eng Sub'))
        self.actionOpenSub2 = QtWidgets.QAction(Form)
        self.actionOpenSub2.setObjectName('openSub2')
        self.actionOpenSub2.triggered.connect(self.openFile('Open Vie Sub'))
        self.actionOpenViewedVideo = QtWidgets.QAction(Form)
        self.actionOpenViewedVideo.triggered.connect(self.openViewedVideo)
        self.menuOpen.addAction(self.actionOpenVideo)
        self.menuOpen.addAction(self.actionOpenSub1)
        self.menuOpen.addAction(self.actionOpenSub2)
        self.menuOpen.addAction(self.actionOpenViewedVideo)
        self.actionOpenVideo.triggered.connect(self.openFile('Open Video'))
        self.menubar.addAction(self.menuOpen.menuAction())
        self.menubar.addAction(self.menuOption.menuAction())
        self.actionOpenSub2.setEnabled(False)

        self.verticalLayout = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")

        # create gridlayout contain scrollarea
        # self.gridLayout = QtWidgets.QGridLayout(Form)
        # self.gridLayout.setObjectName("gridLayout")

        # create scrollarea
        self.scrollArea = QtWidgets.QScrollArea(Form)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setMinimumSize(300, 400)
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 430, 319))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)

        # create verticalscroll
        # chú ý lớp cha là scroll widget content
        self.verticalScroll = QtWidgets.QVBoxLayout(
            self.scrollAreaWidgetContents)
        # self.gridLayout.addWidget(self.scrollArea)

        self.verticalLayout.addWidget(self.menubar, 0)

        scene = QGraphicsScene(self)
        self.graphicsView = QGraphicsView(
            scene)  # dùng widget graphicsview mới overlay lable lên được !!!
        self.videoItem = QGraphicsVideoItem()
        self.videoItem.setSize(QSizeF(600, 400))
        #self.graphicsView.setStyleSheet("background-color:black;")
        # dùng palette (bảng màu) riêng cho widget nên không ảnh hưởng đến labelvideo khi ghi đè lên
        p = self.graphicsView.palette()
        p.setColor(self.graphicsView.backgroundRole(), Qt.black)
        self.graphicsView.setPalette(p)
        scene.addItem(self.videoItem)
        self.horizontalLayout.addWidget(self.graphicsView)
        self.mediaPlayer.setVideoOutput(self.videoItem)

        # add label for videowidget represent subtitle
        self.labelVideo = QtWidgets.QLabel(self.graphicsView)
        self.labelVideo.setObjectName('labelVideo')
        self.labelVideo.setText('')
        self.labelVideo.setStyleSheet(
            "QLabel {font-size: 20px; opacity:1; color:white}")
        self.labelVideo.setFixedWidth(500)
        self.labelVideo.setFixedHeight(200)
        self.labelVideo.setAlignment(Qt.AlignCenter)
        self.labelVideo.setWordWrap(True)
        self.labelVideo.move(int(self.sizeMonitor[0] / 2 - 200),
                             int(self.sizeMonitor[1] * 5 / 7))
        #print(self.labelVideo.x(), self.labelVideo.y())
        #self.labelVideo.raise_()
        #self.videoWidget.raise_()

        self.notificationVideo = QtWidgets.QLabel(self.graphicsView)
        self.notificationVideo.setObjectName('notificationVideo')
        self.notificationVideo.setText('')
        self.notificationVideo.setStyleSheet(
            "QLabel {font-size: 20px; opacity:1; color:white}")
        self.notificationVideo.setFixedWidth(500)
        self.notificationVideo.setFixedHeight(200)
        self.notificationVideo.setAlignment(Qt.AlignCenter)
        self.notificationVideo.setWordWrap(True)
        self.notificationVideo.move(int(self.sizeMonitor[0] / 2 + 200),
                                    int(self.sizeMonitor[1] * 2 / 7))

        self.horizontalLayout.addWidget(self.scrollArea)
        self.verticalLayout.addLayout(self.horizontalLayout, 10)
        # cho stretch widget là 100% tức sẽ chiếm toàn bộ diện tích trong layout !!!
        # những widget khác cho 0% stretch

        # create layoutSlider
        self.horizontalLayoutSlider = QtWidgets.QHBoxLayout()
        self.horizontalLayoutSlider.setObjectName("horizontalLayoutSlider")
        self.labelCurTime = QtWidgets.QLabel(Form)
        self.labelCurTime.setObjectName('labelCurTime')
        self.labelCurTime.setText('00:00')
        self.labelDurationTime = QtWidgets.QLabel(Form)
        self.labelDurationTime.setText('NaN')
        self.labelDurationTime.setObjectName('labelDurationTime')
        self.horizontalLayoutSlider.addWidget(self.labelCurTime)
        self.horizontalLayoutSlider.addWidget(self.positionSlider)
        self.horizontalLayoutSlider.addWidget(self.labelDurationTime)
        #self.verticalLayout.addLayout(self.horizontalLayoutSlider,0)
        # Layout không thể hide được nên sẽ dùng frame (kế thừa từ widget) setlayout để hide nó
        self.frameSlider = QtWidgets.QFrame()
        self.frameSlider.setLayout(self.horizontalLayoutSlider)
        self.verticalLayout.addWidget(self.frameSlider, 0)

        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")

        #self.verticalLayout.addLayout(self.horizontalLayout_2)

        self.toolButton = QtWidgets.QToolButton(Form)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("assets/play.png"), QtGui.QIcon.Normal,
                       QtGui.QIcon.Off)
        self.toolButton.setIcon(icon)
        self.toolButton.setIconSize(QtCore.QSize(32, 32))
        self.toolButton.setObjectName("toolButton")

        # Event play
        self.toolButton.clicked.connect(self.play)

        self.horizontalLayout_2.addWidget(self.toolButton)
        self.toolButton_3 = QtWidgets.QToolButton(Form)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap("assets/previous.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.toolButton_3.setIcon(icon1)
        self.toolButton_3.setIconSize(QtCore.QSize(32, 32))
        self.toolButton_3.setObjectName("toolButton_3")
        self.toolButton_3.clicked.connect(self.backwardVideo)
        self.horizontalLayout_2.addWidget(self.toolButton_3)
        self.toolButton_4 = QtWidgets.QToolButton(Form)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap("assets/next.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.toolButton_4.setIcon(icon2)
        self.toolButton_4.setIconSize(QtCore.QSize(32, 32))
        self.toolButton_4.setObjectName("toolButton_4")
        self.toolButton_4.clicked.connect(self.forwardVideo)
        self.horizontalLayout_2.addWidget(self.toolButton_4)
        #self.verticalLayout.addLayout(self.horizontalLayout_2,0)

        self.toolButtonFullScreen = QtWidgets.QToolButton(Form)
        self.toolButtonFullScreen.setObjectName('toolButtonFullScreen')
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap('assets/fullscreen.png'),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.toolButtonFullScreen.setIcon(icon3)
        self.toolButtonFullScreen.setIconSize(QtCore.QSize(32, 32))
        self.horizontalLayout_2.addWidget(self.toolButtonFullScreen)
        self.toolButtonFullScreen.clicked.connect(self.fullScreen)

        # self.toolButton_3.clicked.connect(self.setSCrollbar(30))
        # self.toolButton_4.clicked.connect(self.setSCrollbar(90))
        self.frameButton = QtWidgets.QFrame()
        self.frameButton.setLayout(self.horizontalLayout_2)
        self.verticalLayout.addWidget(self.frameButton, 0)

        # turn on mousemove tracking for videowidget !!!
        #self.videoWidget.setMouseTracking(True)

        # tắt mục tiêu tập trung để nhật sự kiện arrow button
        self.setChildrenFocusPolicy(Qt.NoFocus)
        self.scrollArea.setFocusPolicy(Qt.NoFocus)
        # setcontentsmargins cho verticalLayout Tổng chứ ko phải cho Form !!!
        #self.verticalLayout.setContentsMargins(0,0,0,0)

        self.scrollArea.hide()

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
Example #17
0
    def __init__(self, parent=None):
        self.debugMode = True
        self.debugVideoPath = '/Users/071cht/Desktop/Lab/jaabagui/testt.mjpeg.avi'

        QMainWindow.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.installEventFilter(self)
        self.setFocusPolicy(Qt.StrongFocus)
        #add new slider
        # self.positionSlider=QSlider(Qt.Horizontal)
        # self.positionSlider.setGeometry (800,800,100,30)
        # self.positionSlider.setRange(0, 0)
        # self.positionSlider.sliderMoved.connect(self.setPosition)

        #setup Video
        #video player
        self.mediaPlayer1 = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.mediaPlayer2 = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.mediaPlayer2.setNotifyInterval(10)
        #self.mediaPlayer.metaDataChanged.connect(self.metaDataChanged)
        self.mediaPlayer1.durationChanged.connect(self.durationChanged)
        self.mediaPlayer1.positionChanged.connect(self.positionChanged)
        self.mediaPlayer2.positionChanged.connect(self.positionChanged)
        #self.mediaPlayer2.positionChanged.connect(self.paintEvent)

        #visualizetion
        self.scene = QGraphicsScene()
        self.ui.graphicsView.setScene(self.scene)
        #self.scene.setBackgroundBrush(Qt.black)
        self.videoItem1 = QGraphicsVideoItem()
        self.videoItem2 = Video()
        self.scene.addItem(self.videoItem1)
        self.scene.addItem(self.videoItem2)
        self.mediaPlayer1.setVideoOutput(self.videoItem1)
        self.mediaPlayer2.setVideoOutput(self.videoItem2)

        #slider bar
        self.ui.horizontalSlider.setRange(0, 0)
        self.ui.horizontalSlider.sliderMoved.connect(self.setPosition)
        # self.ui.horizontalSlider.sliderPressed.connect(self.sliderPressed)

        #draw on video
        self.flyCanvas = TargetView()
        self.scene.addItem(self.flyCanvas)
        #give reference to target view
        self.flyCanvas.setWindowReference(self)

        #lineEdit signals:
        self.ui.lineEdit.returnPressed.connect(self.lineEditChanged)

        #callbacks
        self.ui.actionQuit.triggered.connect(self.quit)
        self.ui.actionLoad_Project.triggered.connect(self.loadVideo)
        self.ui.actionImport_Labels.triggered.connect(self.loadLabels)
        #self.ui.buttonPlay.clicked[bool].connect(self.setToggleText)
        self.ui.buttonPlay.clicked.connect(self.play)
        self.ui.actionSave.triggered.connect(self.saveLabels)
        ## print self.ui.graphicsView.sizeHint()

        #behavior Button
        self.ui.buttonBehavior.clicked.connect(self.behaviorButtonClick)
        self.ui.buttonNone.clicked.connect(self.noneButtonClick)

        #initialization
        self.loaded = False
        self.videoFilename = None
        self.frame_count = None
        self.width = None
        self.height = None
        self.frame_trans = None
        self.previous_frame = 0
        self.current_frame = 0
        self.behaviorButtonStart = False
        self.noneButtonStart = False
        self.currentFly = 1

        #initialize flyInfo
        #self.setCurrentFly(self.currentFly)

        # register flyid changed callback
        self.flyCanvas.onCurrentFlyIdChanged(self.currentFlyIdChangedCallback)
        self.flyCanvas.setCurrentFlyId(self.currentFly)

        # when double click on video, change fly id in target view
        self.videoItem2.onDoubleClick(self.flyCanvas.setCurrentFlyIdByXY)

        ########################
        # DEBUG PART HERE!!!!! #
        ########################
        if (self.debugMode):
            self.debugLoadVideo()
Example #18
0
 def videoItem(self):
     return QGraphicsVideoItem()