#include "ffmpegvideodlg.h" #include "ui_ffmpegvideodlg.h" ffmpegvideoDlg::ffmpegvideoDlg(QWidget *parent) : QWidget(parent) , ui(new Ui::ffmpegvideoDlg) { ui->setupUi(this); iniWindow(); // this->resize(640,480); } ffmpegvideoDlg::~ffmpegvideoDlg() { delete ui; if(ffmpeg->isRunning()){ stop(); } delete ffmpeg; } 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) { ffmpeg = new Cffmpeg_decode; 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; }