• QT 搭建FFmpeg环境


            FFmpeg比较适合新手学习FFmpeg。目前这些示例程序已经覆盖了从流媒体接收,解封装,解码,像素转换,编码,封装,流媒体发送所有这些流程。

            前段时间到现在一直有音视频这方面的想法,最后选择了FFmpeg因为介绍文章感觉比较多,当然无论选择哪种库都有一段踩坑过程,和从陌生、了解、接触、学习、熟悉、应用的一段过程。

    本文作者原创,未经允许禁止转载。

    QQ群:1037037294        网址:www.dreambegins.vip

    QT 搭建FFmpeg环境目录

    1 下载

    ​编辑

     2 解压

    3 项目

    3.1 .h

    3.2 .cpp

    4 版本

    5 扩展


    1 下载

            官方网站:FFmpeg

            官方网站有编译好的exe,但是我这边下载了个遍都没有依赖包,后来在GitHub上面下载的:Release ffmpeg git 2022-09-26 builds · GyanD/codexffmpeg · GitHub         

     2 解压

            官网下载下来的文件可能需要自己编译,这方面教程应该比较少也比较复杂,如果自己使用测试感觉直接GitHub下载就好比较省事,如果公司项目里面使用的话建议大家还是找找方法自行编译一下,解压完成的长这样:

    3 项目

            新建QT工程

    3.1 .h

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_H
    3. #include
    4. #include
    5. #include
    6. QT_BEGIN_NAMESPACE
    7. namespace Ui { class MainWindow; }
    8. QT_END_NAMESPACE
    9. extern "C"
    10. {
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. #include
    17. #include
    18. #include
    19. }
    20. class MainWindow : public QMainWindow
    21. {
    22. Q_OBJECT
    23. public:
    24. MainWindow(QWidget *parent = nullptr);
    25. ~MainWindow();
    26. private slots:
    27. void on_pushButton_clicked();
    28. private:
    29. Ui::MainWindow *ui;
    30. //初始化
    31. void MainWindow::init();
    32. };
    33. #endif // MAINWINDOW_H

    3.2 .cpp

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. MainWindow::MainWindow(QWidget *parent)
    4. : QMainWindow(parent)
    5. , ui(new Ui::MainWindow)
    6. {
    7. ui->setupUi(this);
    8. //输出FFmpeg版本信息
    9. qDebug("------------------------------------------------------------------");
    10. qDebug("%s", avcodec_configuration());
    11. qDebug("version: %d", avcodec_version());
    12. qDebug("------------------------------------------------------------------");
    13. }
    14. MainWindow::~MainWindow()
    15. {
    16. delete ui;
    17. }
    18. // 延时函数
    19. void delay(int msec)
    20. {
    21. QTime dieTime = QTime::currentTime().addMSecs(msec);
    22. while( QTime::currentTime() < dieTime )
    23. QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
    24. }
    25. void MainWindow::on_pushButton_clicked()
    26. {
    27. }

    4 版本

    ------------------------------------------------------------------

    --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-shared --disable-static --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220927

    version: 3879012

    ------------------------------------------------------------------

    5 扩展

    下载连接:内部包含FFmpeg库、本文项目源代码

    https://download.csdn.net/download/qq_37529913/86726944

  • 相关阅读:
    my2sql工具之快速入门
    数据结构与算法之LRU: 实现 LRU 缓存算法功能 (Javascript版)
    #gStore-weekly | gStore最新版本0.9.1之BIND函数的使用
    solidworks在草图中转换实体引用的超全教程
    深入理解TDD(测试驱动开发):提升代码质量的利器!
    HAproxy反向代理与负载均衡
    PHP md5_file() 函数用于判断文件是否有修改
    前端开发工程师:职业前景、工资、 具体工作
    Solana扩容机制分析(2):牺牲可用性换取高效率的极端尝试 | CatcherVC Research
    数据结构2月22日
  • 原文地址:https://blog.csdn.net/qq_37529913/article/details/127102872