QTAV编译

1.下载

QTAV源码:https://github.com/wang-bin/QtAV.git

并下载ffmpeg库:http://ffmpeg.org/

2.qtcreator  添加ffmpeg库路径

方法一:将  ffmpeg-4.2.1-win64-dev复制到QTAV源码并命名为ffmpeg,看图

方法二(官方不推荐):项目---》构建设置-----》构建环境----》添加

3.编译之后将ffmpeg-4.2.1-win64-shared/bin文件下的库复制到QT编译路径下的bin文件中

 

4.安装到QT源码目录

 

5.测试

pro文件里加上LIBS += -lQtAV1 -lQtAVWidgets1

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHBoxLayout>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),m_unit(1000)
{
    ui->setupUi(this);
    m_player = new QtAV::AVPlayer(this);
    m_videoOutput = new QtAV::VideoOutput(this);
    if(!m_videoOutput->widget()){
        return;
    }

    QHBoxLayout *hbox = new QHBoxLayout(this);
    hbox->addWidget(m_videoOutput->widget());
    ui->m_videowidget->setLayout(hbox);
    m_player->setRenderer(m_videoOutput);
    connect(m_player,&QtAV::AVPlayer::started,[=](){
        qDebug()<<"m_player->duration():"<<m_player->duration();
        ui->sliderProgess->setRange(0,m_player->position());
        ui->sliderProgess->setValue(0);
    });
    connect(m_player,&QtAV::AVPlayer::durationChanged,[=](int value){
        qDebug()<<"value"<<value;
       // ui->sliderProgess->setValue(value/m_unit);
    });
    connect(m_player, &QtAV::AVPlayer::notifyIntervalChanged, [=](){
         m_unit = m_player->notifyInterval();
         qDebug()<<"m_unit"<< m_unit ;
    });

    connect(m_player,&QtAV::AVPlayer::positionChanged,[=](qint64 position){
        ui->sliderProgess->setRange(0,int(m_player->duration()/m_unit));
        ui->sliderProgess->setValue(position/m_unit);

    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_actionwenj_triggered()
{
    QString filename = QFileDialog::getOpenFileName(this,"打开文件",QStandardPaths::writableLocation(QStandardPaths::DesktopLocation),tr("video (*.mp4 *.wma)"));
    if(filename.isEmpty())return;
    m_player->play(filename);
}

void MainWindow::on_pauseBtn_clicked()
{
    m_player->pause(!m_player->isPaused());
}

void MainWindow::on_stopBtn_clicked()
{
    m_player->stop();
}

void MainWindow::on_sliderProgess_sliderMoved(int position)
{
    if (!m_player->isPlaying())
        return;
        qDebug()<<"seek"<<position;
        m_player->seek(qint64(position*m_unit));
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值