資源簡(jiǎn)介
基于FFmpegQt的視頻播放器完整源碼.rar
代碼片段和文件信息
#include?“FFVideoPlyer.h“
#include?
#include?
#include?
#include?
#include?“MyFFmpeg.h“
#include?“MyAudio.h“
using?namespace?std;
//全局靜態(tài)變量只在該cpp文件中有效
static?bool?isPressSlider?=?false;
FFVideoPlyer::FFVideoPlyer(QWidget?*parent)
:?QMainWindow(parent)
{
ui.setupUi(this);
startTimer(40);
ui.curTime->setText(“00:00:00“);
ui.totalTime->setText(“00:00:00“);
connect(ui.btn_OpenVideo?SIGNAL(clicked())?this?SLOT(slotOpenFile()));
connect(ui.btn_Play?SIGNAL(clicked())?this?SLOT(slotPlay()));
connect(ui.timeSlider?SIGNAL(sliderPressed())?this?SLOT(sliderPressed()));
connect(ui.timeSlider?SIGNAL(sliderReleased())?this?SLOT(sliderReleased()));
}
void?FFVideoPlyer::slotOpenFile()
{
QString?fname?=?QFileDialog::getOpenFileName(this?QString::fromLocal8Bit(“打開視頻文件“));
if?(fname.isEmpty())
{
return;
}
ui.lineEdit_VideoName->setText(fname);
int?totalMs?=?MyFFmpeg::GetObj()->OpenVideo(fname.toLocal8Bit());
MyAudio::GetObj()->sampleRate?=?MyFFmpeg::GetObj()->m_sampleRate;
MyAudio::GetObj()->channel?=?MyFFmpeg::GetObj()->m_channel;
MyAudio::GetObj()->sampleSize?=?16;
MyAudio::GetObj()->Start();??//播放音頻
char?buf[1024]?=?{?0?};
int?min?=?(totalMs?/?1000)?/?60;
int?sec?=?(totalMs?/?1000)?%?60;
sprintf(buf?“%03d:%02d“?min?sec);
this->ui.totalTime->setText(buf);
MyFFmpeg::GetObj()->m_isPlay?=?true;
ui.btn_Play->setText(QString::fromLocal8Bit(“暫停“));
}
void?FFVideoPlyer::slotPlay()
{
if?(ui.btn_Play->text()?==?QString::fromLocal8Bit(“暫停“))
{
MyFFmpeg::GetObj()->m_isPlay?=?false;?//線程阻塞,視頻暫停
ui.btn_Play->setText(QString::fromLocal8Bit(“播放“));
}
else
{
MyFFmpeg::GetObj()->m_isPlay?=?true;??//線程運(yùn)行,視頻播放
ui.btn_Play->setText(QString::fromLocal8Bit(“暫停“));
}
}
void?FFVideoPlyer::timerEvent(QTimerEvent?*e)
{
int?min?=?(MyFFmpeg::GetObj()->m_pts?/?1000)?/?60;
int?sec?=?(MyFFmpeg::GetObj()->m_pts?/?1000)?%?60;
char?buf[1024]?=?{?0?};
sprintf(buf?“%03d:%02d“?min?sec);
ui.curTime->setText(buf);??//當(dāng)前播放時(shí)間
if?(MyFFmpeg::GetObj()->m_totalMs?>?0)
{
float?rate?=?MyFFmpeg::GetObj()->m_pts?/?(float(MyFFmpeg::GetObj()->m_totalMs));
//只有按下了,才才顯示進(jìn)度條
if?(!isPressSlider)
{
this->ui.timeSlider->setValue(rate?*?1000);?//進(jìn)度條
}
}
}
void?FFVideoPlyer::sliderPressed()
{
isPressSlider?=?true;
}
void?FFVideoPlyer::sliderReleased()
{
isPressSlider?=?false;
float?pos?=?0;
pos?=?this->ui.timeSlider->value()?/?(float)(ui.timeSlider->maximum()?+?1);?//從0開始的,不能讓分母為0
MyFFmpeg::GetObj()->Seek(pos);
}
void?FFVideoPlyer::mousePressEvent(QMouseEvent?*e)
{
int?value?=?((float)(e->pos().x())?/?(float)(this->width()))?*?(ui.timeSlider->maximum()?+?1);
ui.timeSlider->setValue(value);
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????..A..H.?????80384??2019-01-14?15:11??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\.vs\FFVideoPlyer\v14\.suo
?????文件???????2977??2019-01-14?14:33??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.Build.CppClean.log
?????文件???????2853??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.log
?????文件?????252806??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.obj
?????文件??????15638??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\CL.command.1.tlog
?????文件?????323518??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\CL.read.1.tlog
?????文件???????5820??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\CL.write.1.tlog
?????文件????????160??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\FFVideoPlyer.lastbuildstate
?????文件???????1550??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\FFVideoPlyer.write.1u.tlog
?????文件???????3268??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\li
?????文件???????6712??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\li
?????文件???????1610??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\li
?????文件????????346??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\QtMoc.read.1u.tlog
?????文件????????858??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\QtMoc.write.1u.tlog
?????文件????????120??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\QtRcc.read.1u.tlog
?????文件????????278??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\QtRcc.write.1u.tlog
?????文件????????118??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\QtUic.read.1u.tlog
?????文件????????270??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\FFVideoPlyer.tlog\QtUic.write.1u.tlog
?????文件?????105588??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\main.obj
?????文件?????109835??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\moc_FFVideoPlyer.obj
?????文件??????48891??2019-01-14?14:34??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\moc_PlayThread.obj
?????文件??????71651??2019-01-14?14:33??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\moc_VideoViewWidget.obj
?????文件??????75567??2019-01-14?14:33??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\MyAudio.obj
?????文件??????25621??2019-01-14?14:33??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\MyFFmpeg.obj
?????文件?????220440??2019-01-14?14:33??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\PlayThread.obj
?????文件???????5563??2019-01-14?14:33??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\qrc_FFVideoPlyer.obj
?????文件???????2011??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\qt.log
?????文件????????681??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\qt.txt
?????文件????2215936??2019-01-14?14:53??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\vc140.pdb
?????文件??????93623??2019-01-14?14:33??基于FFmpeg?Qt的視頻播放器完整源碼\FFVideoPlyer\FFVideoPlyer\Debug\VideoViewWidget.obj
............此處省略181個(gè)文件信息
評(píng)論
共有 條評(píng)論