BPlay1.0系列(3:QT下装载ffmpeg)

上一节实现了从本地向BPlay1.0载入一个媒体文件,但是却无法解析该文件,本节将通过向QT载入ffmpeg解决这个问题。

ffmpeg装载

1、 首先需要从 ffmpeg官网 下载ffmpeg库,我下载的是ffmpeg-n4.4-latest-win64-gpl-shared-4.4版本的库,解压后可以看到里面有这些文件:
在这里插入图片描述
2、我们需要将这些文件装载到QT工程下,打开BPlay1.0所在的路径,创建一个以ffmpeg命名的文件夹:
在这里插入图片描述
3、进入ffmpeg文件夹,将第一步从官网下载的ffmpeg库里的lib文件夹和include文件夹拷贝到BPlay1.0工程ffmpeg路径下:
lib拷贝
include拷贝
4、修改QT中间文件(xxx.pro),添加下面几行,使BPlay1.0构建时可以链接到ffmpeg库:

INCLUDEPATH += $$PWD/ffmpeg/include
LIBS  +=-L$$PWD/ffmpeg/lib
LIBS  += -lavcodec -lavformat -lswscale -lavutil -lswresample

5、编写测试程序检查ffmpeg是否已经成功链接上,首先修改打开媒体文件按钮的回调,新增如下代码:

/********************************
 * void MainWindow::on_Bopenfile_btn_clicked()
 * 功能:打开文件按钮点击回调函数
 * *****************************/
void MainWindow::on_Bopenfile_btn_clicked()
{
    QString FilePath = QFileDialog::getOpenFileName(this, QString("媒体文件"), QString("."), QString("视频文件(*.mp4 *.flv *.avi);;所有文件(*.*)"));
    if (FilePath.isEmpty()) {
        BLOG("Media File empty");
        return;
    }

    if (-1 == Bffmpeg::BLoadMediaFile(FilePath)) {
        BLOG("Media File illegal");
        return;
    }

    return;
}

在Bffmpeg类里面添加BLoadMediaFile方法(此步是检查ffmpeg是否可用):

/********************************
 * int BLoadMediaFile(QString FilePath)
 * 功能:媒体文件加载
 *      成功返回:0
 *      失败返回:-1
 * *****************************/
int Bffmpeg::BLoadMediaFile(QString FilePath)
{
    unsigned ver = avcodec_version();
    BLOG("ver:%d", ver);
    return 0;
}

BLoadMediaFile里面应用了ffmpeg里面一个查看ffmpeg版本号的接口,Bffmpeg.h页需要包含上ffmpeg的头文件(注意加上extern “C”):

extern "C" {
    #include <libavcodec/avcodec.h>
    #include <libavformat/avformat.h>
    #include <libavformat/version.h>
    #include <libavdevice/avdevice.h>
    #include <libavutil/time.h>
    #include <libavutil/mathematics.h>
    #include <libswscale/swscale.h>
    #include <libswresample/swresample.h>
}

接着重新构建一下代码,发现程序编译、链接均成功,但是在运行时报错了:
在这里插入图片描述
不要慌,这个是因为BPlay1.0在运行时找不到装载库造成的,我们需要把ffmpeg库里面的bin下是dll文件放到BPlay1.0运行的路径下:
在这里插入图片描述
再次构建BPlay1.0时,成功获取到ffmpeg版本号,ffmpeg装载成功!
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值