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)
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
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)
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()
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
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")
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
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)
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)
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)
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
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)
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()
def videoItem(self): return QGraphicsVideoItem()