Qt实例:视频播放器
一、概览
二、UI界面
三、工程文件QPlayer.pro
#------------------------------------------------- # # Project created by QtCreator 2017-10-09T09:28:10 # #-------------------------------------------------QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = QPlayer TEMPLATE = appSOURCES += main.cpp\qplayer.cppHEADERS += qplayer.hFORMS += qplayer.ui
四、头文件qplayer.h
#ifndef QPLAYER_H #define QPLAYER_H#include <QWidget> #include <QTimer> #include <QProcess>namespace Ui { class QPlayer; }class QPlayer : public QWidget {Q_OBJECTpublic:explicit QPlayer(QWidget *parent = 0);~QPlayer();private slots:void on_addBt_clicked();void on_deleteBt_clicked();//定时刷新时间 槽函数void update_time();void on_movieList_clicked(const QModelIndex &index);void on_playPauseBt_clicked();void on_pervBt_clicked();void on_nextBt_clicked();void read_data(); private:Ui::QPlayer *ui;QTimer *mtimer;QProcess *mprocess; };#endif // QPLAYER_H
五、main.cpp
#include "qplayer.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);QPlayer w;w.show();return a.exec(); }
六、qplayer.cpp
#include "qplayer.h" #include "ui_qplayer.h" #include <QFileDialog> #include <QDate> #include <QTime> #include <QModelIndex> #include <QDebug>QPlayer::QPlayer(QWidget *parent) :QWidget(parent),ui(new Ui::QPlayer) {ui->setupUi(this);//去掉标题栏边框...this->setWindowFlags(this->windowFlags()|Qt::FramelessWindowHint);//定时器初始化,关联信号与槽函数,启动mtimer = new QTimer();connect(mtimer, SIGNAL(timeout()),this, SLOT(update_time()));mtimer->start(1000);//定义Qt中的进程mprocess = new QProcess();//关联进程读取数据信号connect(mprocess,SIGNAL(readyRead()),this, SLOT(read_data())); }QPlayer::~QPlayer() {delete ui; }/** 添加视频到列表中 */ void QPlayer::on_addBt_clicked() {QStringList list = QFileDialog::getOpenFileNames(this);ui->movieList->addItems(list); }/** 删除列表中的视频(记录) */ void QPlayer::on_deleteBt_clicked() {//获取当前选项行号int row = ui->movieList->currentRow();QListWidgetItem *item = ui->movieList->takeItem(row);delete item; }/** 定时刷新时间槽函数 */ void QPlayer::update_time() {ui->dateLb->setText(QDate::currentDate().toString("yyyy-MM-dd"));ui->timeLb->setText(QTime::currentTime().toString("hh:mm:ss"));//定时写获取时间命令mprocess->write("get_time_length\n");//视频总时间mprocess->write("get_time_pos\n");//视频当前时间 }/* 点击播放视频(通过Qt中的进程运行mplayer播放视频) */ void QPlayer::on_movieList_clicked(const QModelIndex &index) {int row = index.row();//获取视频路径QString mpath = ui->movieList->item(row)->text();//mplayer -slave -quiet -geometry 50:50 -zoom -x 400 -y 350 /mnt/mv.wmv//播放命令格式打包QString cmd = QString("mplayer -slave -quiet -geometry 0:0 -zoom -x %1 -y %2 %3").arg(QString::number(ui->label->width())).arg(QString::number(ui->label->height())).arg(mpath);//启动进程播放//判断进程是否在运行,if(mprocess->state()==QProcess::Running){mprocess->kill();//杀死进程//等待mprocess->waitForFinished();}mprocess->start(cmd); }/* 播放与暂停 pause */ void QPlayer::on_playPauseBt_clicked() {//Qt与mplayer通信mprocess->write("pause\n"); }void QPlayer::on_pervBt_clicked() {//获取上一个视频路径int row = ui->movieList->currentRow();//获取当前行号if(row == 0)row = ui->movieList->count()-1; //把row设置为最下面一个elserow--;//设置当前行ui->movieList->setCurrentRow(row);on_movieList_clicked(ui->movieList->currentIndex()); }void QPlayer::on_nextBt_clicked() {//获取下一个视频路径int row = ui->movieList->currentRow();//获取当前行号if(row == ui->movieList->count()-1)row = 0; //把row设置为最下面一个elserow++;//设置当前行ui->movieList->setCurrentRow(row);on_movieList_clicked(ui->movieList->currentIndex()); }/* 读取视频时间数据 */ void QPlayer::read_data() {while(mprocess->canReadLine()){//读取时间QString msg = mprocess->readLine();//qDebug()<<msg;//"ANS_LENGTH=238.20\nANS_TIME_POSITION=53.9\n"if(msg.indexOf("ANS_LENGTH=")>=0){msg.remove("ANS_LENGTH=");msg.remove("\n");//把msg秒数转换为hh:mm:ss格式double all = msg.toDouble();int iall = (int)all;//得到总共秒数//设置进度条最大值ui->horizontalSlider->setMaximum(iall);QTime atime(0,0,0);atime = atime.addSecs(iall);ui->allTimeLb->setText(atime.toString("hh:mm:ss"));}if(msg.indexOf("ANS_TIME_POSITION=")>=0){msg.remove("ANS_TIME_POSITION=");msg.remove("\n");//把msg秒数转换为hh:mm:ss格式double pos = msg.toDouble();int ipos = (int)pos;//得到总共秒数//更新进度条ui->horizontalSlider->setValue(ipos);QTime atime(0,0,0);atime = atime.addSecs(ipos);ui->posTimeLb->setText(atime.toString("hh:mm:ss"));}} }
七、arm开发板效果:
Qt实例:视频播放器相关推荐
- Qt FFmpeg视频播放器开发(八):播放器UI改造、高仿QQ影音
最近把播放器项目进行了更新,决定参照QQ影音的界面进行实现,我现在的实现如下: 下图是真实的QQ影音 相比QQ影音界面,我的实现有一定的差距,主要是控件的配色,以及中间那个动态图,由于没有 ...
- QML+Qt音视频播放器
代码地址 xyygudu/Player: Qt和QML实现了视频播放器和音乐播放器 (github.com) 部分效果展示 实现的功能 视频相关:播放暂停.播放进度调节.音量调节.列表显示指定目录下的 ...
- QT视频播放器(windows qt、linux qt 音视频播放器)
想要更多项目私wo!!! 一.项目简介 这是基于Qt的QMediaPlayer实现的音视频播放器,实现了播放器的常用功能,例如根据播放列表选择播放的音视频,拖动滑块控制音视频播放. 二. ...
- Qt FFmpeg视频播放器开发(二):FFmepg基本使用与视频播放
本篇博客目标:读帧解码显示视频 开始进入ffmepg的开发之旅.音视频的细节知识不统一讲解,我在教程中逐点渗透,容我以雷神的话开篇. 视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议 ...
- Qt+Mplayer视频播放器
用到的工具: Qt5.5.1,msvc2012编译器,Mplayer on windows视频解码器,32位操作系统. 效果图: Qt控制Mplayer的slave模式,Qt负责貌美如花,Mplaye ...
- Qt编写视频播放器(vlc内核)
在研究qt+vlc的过程中,就想直接做个播放器用于独立的项目,vlc还支持硬件加速,不过部分电脑硬件不支持除外.用vlc的内核写播放器就是快,直接调用api就行,逻辑处理和ui展示基本上分分钟的事情, ...
- Qt编写视频播放器(支持pbonon/qmediaplayer/ffmpeg/vlc/mpv等多种内核)
一.前言 花了一年多的时间,终于把这个超级播放器做成了自己想要的架构,用户的需求是一方面,自己架构方面的提升也是一方面,最主要是将界面和解码解耦了,这样才能动态的挂载不同的解码内核到不同的视频监控窗体 ...
- Qt + FFmpeg 视频播放器
一. 环境搭建 1. 下载 QT:window 5.7.0版本 FFmpeg: ffmpeg-20200522-38490cb-win32-dev 注意:这里下载 32位dev版本,要和编译器对应(我 ...
- 最新libvlc4.0+Qt设计视频播放器
一.前言 VLC是一款简单且非常优秀的免费开源软件,所有开源软件的好处他都有,而且是为数不多开源并长期更新维护的播放器,兼容性等各个方面都很好.VLC提供了libvlc库,可以很方便进行二次开发. 稳 ...
- 【QT项目——视频播放器——开发】
播放器项目开发 从设计的角度来说,要减少继承,继承带来的复杂度.调试度.难度较大.扩展性较差 继承多代的话会导致代码更新比较困难 1面向对象的五大原则(降低代码的维护成本) 1.1单一职责 让类尽量单 ...
最新文章
- BI之SSAS完整实战教程3 -- 创建第一个多维数据集
- div 居中,浏览器兼容性
- linux内核模块配置,如何为linux内核模块开发配置clang_complete?
- 你能抱我一下,好吗?
- 使用jupyterthemes插件定制jupyter notebook界面
- HDU 4337 King Arthur's Knights
- 搭建Mybatis源码环境
- (C语言)判断数独是否正确
- 用c语言绘制小猫图案,【科研猫·R】R语言从入门到精通:Day8
- 融会贯通,并行不悖丨2022年8月《中国数据库行业分析报告》发布!
- linux+ros2 launch文件开机自启动
- 基址寻址与变址寻址的个人理解
- APP二维码微信扫描后无法下载 微信中无法下载APP的解决方案
- 辨析三种一致性:缓存一致、内存一致、数据一致
- 51自学网-Java基础视频教程-笔记 最后修改于2020/9/9
- 如何远程操控另一台计算机,电脑之间如何远程控制_怎么远程控制自己的另一台电脑-win7之家...
- 高效能人士的执行四原则(一)——前言
- 将windows2000升级到windows2003系统
- Detectron2 交叉验证。直接计算mAP版本
- C语言 | 求a+aa+...+aa..a的值