一、概览

二、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实例:视频播放器相关推荐

  1. Qt FFmpeg视频播放器开发(八):播放器UI改造、高仿QQ影音

      最近把播放器项目进行了更新,决定参照QQ影音的界面进行实现,我现在的实现如下:   下图是真实的QQ影音   相比QQ影音界面,我的实现有一定的差距,主要是控件的配色,以及中间那个动态图,由于没有 ...

  2. QML+Qt音视频播放器

    代码地址 xyygudu/Player: Qt和QML实现了视频播放器和音乐播放器 (github.com) 部分效果展示 实现的功能 视频相关:播放暂停.播放进度调节.音量调节.列表显示指定目录下的 ...

  3. QT视频播放器(windows qt、linux qt 音视频播放器)

    想要更多项目私wo!!! 一.项目简介        这是基于Qt的QMediaPlayer实现的音视频播放器,实现了播放器的常用功能,例如根据播放列表选择播放的音视频,拖动滑块控制音视频播放. 二. ...

  4. Qt FFmpeg视频播放器开发(二):FFmepg基本使用与视频播放

    本篇博客目标:读帧解码显示视频 开始进入ffmepg的开发之旅.音视频的细节知识不统一讲解,我在教程中逐点渗透,容我以雷神的话开篇. 视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议 ...

  5. Qt+Mplayer视频播放器

    用到的工具: Qt5.5.1,msvc2012编译器,Mplayer on windows视频解码器,32位操作系统. 效果图: Qt控制Mplayer的slave模式,Qt负责貌美如花,Mplaye ...

  6. Qt编写视频播放器(vlc内核)

    在研究qt+vlc的过程中,就想直接做个播放器用于独立的项目,vlc还支持硬件加速,不过部分电脑硬件不支持除外.用vlc的内核写播放器就是快,直接调用api就行,逻辑处理和ui展示基本上分分钟的事情, ...

  7. Qt编写视频播放器(支持pbonon/qmediaplayer/ffmpeg/vlc/mpv等多种内核)

    一.前言 花了一年多的时间,终于把这个超级播放器做成了自己想要的架构,用户的需求是一方面,自己架构方面的提升也是一方面,最主要是将界面和解码解耦了,这样才能动态的挂载不同的解码内核到不同的视频监控窗体 ...

  8. Qt + FFmpeg 视频播放器

    一. 环境搭建 1. 下载 QT:window 5.7.0版本 FFmpeg: ffmpeg-20200522-38490cb-win32-dev 注意:这里下载 32位dev版本,要和编译器对应(我 ...

  9. 最新libvlc4.0+Qt设计视频播放器

    一.前言 VLC是一款简单且非常优秀的免费开源软件,所有开源软件的好处他都有,而且是为数不多开源并长期更新维护的播放器,兼容性等各个方面都很好.VLC提供了libvlc库,可以很方便进行二次开发. 稳 ...

  10. 【QT项目——视频播放器——开发】

    播放器项目开发 从设计的角度来说,要减少继承,继承带来的复杂度.调试度.难度较大.扩展性较差 继承多代的话会导致代码更新比较困难 1面向对象的五大原则(降低代码的维护成本) 1.1单一职责 让类尽量单 ...

最新文章

  1. BI之SSAS完整实战教程3 -- 创建第一个多维数据集
  2. div 居中,浏览器兼容性
  3. linux内核模块配置,如何为linux内核模块开发配置clang_complete?
  4. 你能抱我一下,好吗?
  5. 使用jupyterthemes插件定制jupyter notebook界面
  6. HDU 4337 King Arthur's Knights
  7. 搭建Mybatis源码环境
  8. (C语言)判断数独是否正确
  9. 用c语言绘制小猫图案,【科研猫·R】R语言从入门到精通:Day8
  10. 融会贯通,并行不悖丨2022年8月《中国数据库行业分析报告》发布!
  11. linux+ros2 launch文件开机自启动
  12. 基址寻址与变址寻址的个人理解
  13. APP二维码微信扫描后无法下载 微信中无法下载APP的解决方案
  14. 辨析三种一致性:缓存一致、内存一致、数据一致
  15. 51自学网-Java基础视频教程-笔记 最后修改于2020/9/9
  16. 如何远程操控另一台计算机,电脑之间如何远程控制_怎么远程控制自己的另一台电脑-win7之家...
  17. 高效能人士的执行四原则(一)——前言
  18. 将windows2000升级到windows2003系统
  19. Detectron2 交叉验证。直接计算mAP版本
  20. C语言 | 求a+aa+...+aa..a的值

热门文章

  1. CSS高度自适应 height:100%;
  2. JAVA基础学习---Markdown
  3. 大话主席(superslide和 touchslide)插件的使用
  4. access出错提示“无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开。”
  5. 孙溟㠭书画艺术《自由》
  6. c语言编辑邀请函,邀请函的短句
  7. 发达国家服务业占GDP的 80%
  8. 使用广泛的pdf分割软件
  9. 12种错误的饮食搭配,著名人生保健专家撰写-照顾别人,也要照顾好自己
  10. 【送书福利】图论算法:如何找到最适合自己的另一半 ?