You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PayloadAPP/ffmpegvideodlg.cpp

94 lines
1.6 KiB
C++

#include "ffmpegvideodlg.h"
#include "ui_ffmpegvideodlg.h"
ffmpegvideoDlg::ffmpegvideoDlg(QWidget *parent)
: QWidget(parent)
, ui(new Ui::ffmpegvideoDlg)
{
ui->setupUi(this);
iniWindow();
ffmpeg = new Cffmpeg_decode;
// this->resize(640,480);
}
ffmpegvideoDlg::~ffmpegvideoDlg()
{
if(ffmpeg->isRunning()){
stop();
}
delete ffmpeg;
delete ui;
}
void ffmpegvideoDlg::iniWindow()
{
}
void ffmpegvideoDlg::setUrl(QString url)
{
ffmpeg->setUrl(url);
}
void ffmpegvideoDlg::play()
{
QString VideoFilePath = QDir::currentPath()+"./Video";
QDir VideoDir (VideoFilePath);
if(!VideoDir.exists())
{
VideoDir.mkdir(VideoFilePath);
qDebug()<<"文件夹创建成功";
}
if(!m_PlayStatus)
{
connect(ffmpeg,SIGNAL(sendQImage(QImage)),this,SLOT(receiveQImage(QImage)));
connect(ffmpeg,&Cffmpeg_decode::finished,ffmpeg,&Cffmpeg_decode::deleteLater);
}
if(!ffmpeg->isRunning())
{
ffmpeg->start();
}
}
void ffmpegvideoDlg::stop()
{
if(ffmpeg->isRunning() && !ffmpeg->IsstopPlay ){
ffmpeg->IsstopPlay = true;
ffmpeg->requestInterruption();
ffmpeg->quit();
ffmpeg->wait();
ffmpeg = nullptr;
}
img.fill(Qt::black);
}
void ffmpegvideoDlg::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawImage(0,0,img);
}
void ffmpegvideoDlg::receiveQImage(const QImage &rImg)
{
img = rImg.scaled(this->size());
update();
}
bool ffmpegvideoDlg::Isplay(bool IsstopPlay)
{
return ffmpeg->IsstopPlay = IsstopPlay;
}