该软件用于切割视频,手动选取视频片段的起始帧和结束帧并保存为json文件。gui界面如下:包含快进、快退、暂停等功能,
代码如下:
# coding=UTF-8
"""
theme: pyqt5实现动作起始帧和结束帧的定位,将定位到的帧数保存json文件
time: 2024-6-27
author: cong
"""
import json
import re
import sys
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent, QMediaPlaylist
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
# 使用 QMediaPlayer 可以进行视频文件解码,视频播放必须将视频帧在某个界面组件上显示,
# 有 QVideoWidget 和 QGraphicsVideoItem 两种视频显示组件,也可以从这两个类继承,自定义视频显示组件。
# QMediaPlayer 也可以结合 QMediaPlaylist 实现视频文件列表播放。
class VideoWin(QWidget):
save_flag = 0
save_start_count = 1
save_end_count = 2
def __init__(self):
super(VideoWin, self).__init__()
self.setWindowTitle("MediaPlayer")
# 播放画面
self.player = QMediaPlayer()
self.video_widget = QVideoWidget(self) # 定义视频显示的widget,界面组件
self.video_widget.setFixedSize(1280,720)
self.player.setVideoOutput(self.video_widget) # 视频播放输出的widget,就是上面定义的
# 当前播放的进度,显示调整视频进度条
self.label_time = QLabel()
self.timeSlider = QSlider()
self.timeSlider.setOrientation(Qt.Horizontal)
self.timeSlider.setValue(0)
self.timeSlider.setMinimum(0)
self.player.positionChanged.connect(self.get_time)
self.timeSlider.sliderPressed.connect(self.player.pause)
self.timeSlider.sliderMoved.connect(self.change_time)
self.timeSlider.sliderReleased.connect(self.player.play)