<Qt>实例:视频播放器
来源:互联网 发布:线切割手动圆形编程 编辑:程序博客网 时间:2024/05/22 03:07
一、概览
二、UI界面
三、工程文件QPlayer.pro
#-------------------------------------------------## Project created by QtCreator 2017-10-09T09:28:10##-------------------------------------------------QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = QPlayerTEMPLATE = 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设置为最下面一个 else row--; //设置当前行 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设置为最下面一个 else row++; //设置当前行 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开发板效果:
阅读全文
0 0
- <Qt>实例:视频播放器
- <Qt>实例:视频播放器
- Qt视频播放器
- Qt+Mplayer视频播放器
- 基于Mplayer的QT视频播放器
- QT 简单的视频播放器phonon
- QT+ffmpeg视频播放器学习知识点
- QT视频播放器的一些笔记
- QT OpenCV 播放视频
- Qt 视频播放
- FFMPEG Qt视频播放器之播放控制
- Android-SurfaceView+VideoView视频播放器实例
- IOS 视频播放实例
- 视频播放程序实例
- FFMPEG Qt视频播放器之音视频同步
- Android 视频播放器笔记之播放器实例代码
- android开发视频播放器------Vitamio 播放页实例
- Qt播放视频的软件
- 一、Rxjava从头学:响应式编程
- 理解Js作用域和作用域链
- 2016最流行的Android组件、工具、框架大全
- 图片的二次采样
- GIS软件开发工具包TatukGIS Developer Kernel v11.8发布,改进DWG阅读器
- <Qt>实例:视频播放器
- 如何处理数据库中ID重复的问题
- 关于Properties类读取properties文件时乱码问题
- 赶上RocketMq4.2.0更新这一波~~
- Oracle数据库中的分页--rownum
- 2017-10-15
- 练习 20:文件系统:修改和创建文件系统,tune2fs,mkfs
- GAN眼中的图像翻译(附神奇歌单)
- Python3 内置函数