QMediaPlayer实现视频播放器功能

一、视频播放器功能

一共实现了14种播放功能:
QMediaPlayer实现视频播放器功能_第1张图片
具体Demo:https://download.csdn.net/download/birenxiaofeigg/12131852

二、代码一览:

QMediaPlayer实现视频播放器功能_第2张图片

三,部分代码显示

// 设置总时长
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视频解码器

你可能感兴趣的:(Qt)