一、视频播放器功能
一共实现了14种播放功能:
具体Demo:https://download.csdn.net/download/birenxiaofeigg/12131852
二、代码一览:
三,部分代码显示
// 设置总时长
void mMediaPlayer::onDurationChanged(qint64 dut)
{
ui.hsldVideo->setRange(0, dut);
QTime time = QTime(0, 0, 0).addMSecs(dut);//总时长以ms为单位
QString sum = "/" + time.toString("HH:mm:ss");
ui.labelSum->setText(sum);
}
// 进度条随播放进度自动移动
void mMediaPlayer::setHsldVideoValueSlot(qint64 v)
{
ui.hsldVideo->setValue(v);
QTime time = QTime(0, 0, 0).addMSecs(v);//总时长以ms为单位
QString pass = time.toString("HH:mm:ss");
ui.labelPassed->setText(pass);
}
// 进度条拖动
void mMediaPlayer::onHsldVideoChangedSlot(int pos)
{
if (mMyPlayer->state() != QMediaPlayer::StoppedState)
{
mMyPlayer->setPosition(pos);
QTime time = QTime(0, 0, 0).addMSecs(pos);//总时长以ms为单位
QString pass = time.toString("HH:mm:ss");
ui.labelPassed->setText(pass);
}
}
// 音量条拖动
void mMediaPlayer::onHsldAudioChangedSlot(int vm)
{
mMyPlayer->setVolume(vm);
}
// 快进速度设置
void mMediaPlayer::playbackRateChangedSlot(double rate)
{
if (mVideoName.isEmpty()) return;
mMyPlayer->setPlaybackRate(rate);
}
// 播放记录,双击开始播放
void mMediaPlayer::listWidgetDbClickedSlot(QListWidgetItem * item)
{
QString fileName = item->text();
if (fileName.isEmpty()) return;
for (int i = 0; i < mVideoList.size(); ++i)
{
if (mVideoList[i].contains(fileName))
{
mVideoName = mVideoList[i];
break;
}
}
play();
}
三,非常非常重要的备注:
请一定要先安装Lav格式视频解码器,再运行本Demo.
因为,QMediaPlayer,自身没有视频解码功能,基于windows系统的视频解码器,进行视频播放的。
Lav格式视频解码器下载,两者二选一:
1、Lav Filters
或者,
2、K-Lite视频解码器
版权声明:本文为birenxiaofeigg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。