• qt+ffmpeg 实现音视频播放(一)


    一、ffmpeg下载

    官网:点击跳转

    二、模块介绍

    1. libavcodec音视频编解码库,提供了多种编解码器,可以支持多种音视频格式的编解码操作。 
     
    2. libavformat:音视频封装和解封装库,提供了多种封装格式的支持,可以读取和写入多种音视频文件格式。 
     
    3. libavfilter:音视频过滤器库,提供了多种音视频过滤器,可以对音视频流进行各种处理,如添加水印、调整亮度、对比度等。 
     
    4. libavdevice:音视频输入输出设备库,提供了多种输入输出设备的支持,如摄像头、麦克风等。 
     
    5. libswscale:视频图像缩放库,提供了多种图像缩放算法,可以对视频图像进行缩放操作。 
     
    6. libswresample:音频重采样库,提供了多种音频重采样算法,可以对音频进行重采样操作。

    7.libavutil:包含一些公共的工具函数。

    8. libswscale:用于视频场景比例缩放、色彩映射转换。

    9.libpostproc:用于后期效果处理。

    10.ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等。

    11.ffsever:一个 HTTP 多媒体即时广播串流服务器。

    12.ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示。

    三、配置、编译ffmpeg

    在解压出来的ffmpeg目录下新建文件夹 build 和文件 1.sh ,并往 1.sh 写入以下信息:

    export PKG_CONFIG_PATH=/home/gui/build/lib/pkgconfig

    ./configure  --enable-cross-compile --target-os=linux \
    --cc=/opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-gcc \
    --sysroot=/opt/cluster-qt/2.5.3/sysroots/aarch64-sdrv-linux  \
    --arch=arm64  \
    --prefix=$PWD/build \
    --disable-shared \
    --enable-static \
    --enable-gpl \
    --enable-nonfree \
    --enable-ffmpeg \
    --enable-ffplay  \
    --enable-swscale \
    --enable-pthreads \
    --disable-armv5te \
    --disable-armv6 \
    --disable-armv6t2 \
    --disable-yasm \
    --disable-stripping \
    --enable-libx264 \
    --enable-libmp3lame \
    --extra-ldflags=-L/home/gui/build/lib/ \
    --extra-cflags=-I/home/gui/build/include/ 

    sysroot 的作用:为编译时指定逻辑目录。编译器通常会在 /usr/include 和 /usr/lib 中搜索头文件和库,使用这个选项后将在该选项指定目录后的 usr/include 和 usr/lib 目录中搜索

    如果使用 sysroot 选项的同时又使用了 -isysroot 选项,则此选项仅作用于库文件的搜索路径,而 -isysroot 选项将作用于头文件的搜索路径。

    --extra-cflags、 --extra-ldflags :指定模块的头文件与库文件的位置。

    --extra-libs:指定链接库。

    如:./configure --extra-libs="-lx264"

    之后,执行1.sh进行配置

    ./1.sh

    最后,编译、构建ffmpeg

    make -j4 && make install

    四、工程配置

    新建qt工程,在.pro文件中添加以下信息:

    LIBS += -L/home/gui/ffmpeg/build/lib/ -lavcodec -lavformat -lavutil -lswresample -lswscale

    INCLUDEPATH += /home/gui/ffmpeg/build/include

    然后在需要的地方添加头文件即可:

    extern "C"
    {
    #include
    #include
    #include
    #include
    }

  • 相关阅读:
    电脑重装系统 win11 怎么关闭系统软件通知
    备战数学建模32-相关性分析2
    容器技术-Docker的优点
    MySQL-存储过程和函数
    关于队头阻塞的一些笔记
    指针笔试题(帮助你全面理解指针!!!)
    【人工智能数学基础】几何解释——最小二乘法
    WebRTC点对点通讯建立连接的流程
    Read Completion Boundary (RCB)切分规则
    YB6502 5V输入双节串联磷酸铁锂电池升压充电芯片
  • 原文地址:https://blog.csdn.net/ckg3824278/article/details/136672418