FFMpeg环境搭建(WIN10)

0、前期准备

软件环境:Win10 + qtcreator

软件准备:MSYS2 安装包FFmpeg源码

1、软件安装

通过MSYS2安装编译工具

1、打开MSYS2安装包,一路next即可
(注:如果需要更改路径可以自行更改)


2、安装完成之后,打开软件,输入以下命令进行mingw安装,命令如下

bash 复制代码
# 先运行
pacman -Syu
pacman -S make
# 64位工具链
pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2
# 32位工具链
pacman -S mingw-w64-i686-nasm mingw-w64-i686-gcc mingw-w64-i686-SDL2 \
      mingw-w64-i686-pkgconf mingw-w64-i686-binutils

编译FFMpeg

1、打开MSYS2 安装路径
(笔者安装的路径为:D:\msys64,具体看安装时选择的路径)

  • 进入home文件夹,里面有一个以用户名的命名的文件夹,
  • 进入该文件夹里面(如D:\msys64\home\xxx)
  • 将下载好的FFmpeg源码拷贝到该文件夹,然后解压,然后返回上两层文件夹(D:\msys64)

2、根据要编译的dll为32位还是64位,打开相对应的软件

3、打开之后输入gcc -v,检查编译链的版本位数是否是想要的位数,如下:

4、输入 ls 查看是否有刚才解压的ffmpeg文件,如下:

5、确认有该文件之后,若无该文件回到第4步骤检查,清楚文件路径是否正确,进入解压后的文件,输入下面配置(具体配置看自己的需要来选择),然后回车
(注意:configure时间有点长要稍微等一会,出现下面现在之后表示配置成功)

bash 复制代码
./configure \
  --prefix="$HOME/ffmpeg_build" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs=-lpthread \
  --extra-libs=-lm \
  --bindir="$HOME/ffmpeg_build/bin" \
  --enable-gpl \
  --enable-nonfree \
  --enable-shared \
  --enable-decoder=h264 \
  --enable-parser=h264 


6、输入make -j4 && make install进行编译安装
7、编译安装完成之后,来到D:\msys64\home\xxx目录下,就会看到ffmpeg_build目录,该目录下的内容如下

8、进行文件分类,新建 ffmpeg 文件夹,进入 ffmepg 文件夹,

新建 lib 文件夹,将 ffmpeg_build 中的 bin 文件中的.lib文件拷贝到该目录

新建 dll 文件夹,将 ffmpeg_build 中的 bin 文件中的.dll文件拷贝到该目录

将 ffmpeg_build 中的文件 include 文件夹拷贝到ffmepg目录

2、测试

文件拷贝

1、将ffmpeg_build目录名字修改为ffmpeg之后(可以不修改),拷贝到qt项目之下,如下:

打开QT Creator

1、新建qt工程
2、修改.pro文件,修改后的内容如下

c 复制代码
QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

win32: LIBS += -L$$PWD/ffmpeg/lib/ -lavcodec\
                -L$$PWD/ffmpeg/lib/ -lavdevice\
                -L$$PWD/ffmpeg/lib/ -lavfilter\
                -L$$PWD/ffmpeg/lib/ -lavformat\
                -L$$PWD/ffmpeg/lib/ -lavutil\
                -L$$PWD/ffmpeg/lib/ -lpostproc\
                -L$$PWD/ffmpeg/lib/ -lswresample\
                -L$$PWD/ffmpeg/lib/ -lswscale\

INCLUDEPATH += $$PWD/ffmpeg/include
DEPENDPATH += $$PWD/ffmpeg/include

3、mian.cpp文件中,输入如下代码

c 复制代码
#include <QCoreApplication>
#include <iostream>
#include <string>

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

int main()
{
    av_log_set_level(AV_LOG_DEBUG);
    av_log(NULL, AV_LOG_DEBUG,"Hello ffmpeg!\n");
    av_log(NULL, AV_LOG_DEBUG,"ffmpeg version = %s\n", av_version_info());
    return 0;
}

4、编译运行。结果如下:
(注意:记得把ffmpeg/bin/下的dll文件拷贝到生成的exe文件目录下,否则无法运行成功)

到此完结

相关推荐
runing_an_min23 分钟前
ffmpeg视频滤镜:提取缩略图-framestep
ffmpeg·音视频·framestep
韩曙亮13 小时前
【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
ffmpeg·音视频·avpacket·av_packet_clone·av_packet_ref·ffmpeg内存结构
oushaojun217 小时前
ubuntu中使用ffmpeg和nginx推流rtmp视频
nginx·ubuntu·ffmpeg·rtmp
莫固执,朋友18 小时前
网络抓包工具tcpdump 在海思平台上的编译使用
网络·ffmpeg·音视频·tcpdump
lxkj_202419 小时前
修改ffmpeg实现https-flv内容加密
网络协议·https·ffmpeg
cuijiecheng201819 小时前
音视频入门基础:MPEG2-TS专题(6)——FFmpeg源码中,获取MPEG2-TS传输流每个transport packet长度的实现
ffmpeg·音视频
VisionX Lab1 天前
数据脱敏工具:基于 FFmpeg 的视频批量裁剪
python·ffmpeg·音视频
柳鲲鹏2 天前
全网首发:Ubuntu编译跨平台嵌入式支持ffmpeg的OpenCV
linux·ubuntu·ffmpeg
冰山一脚20132 天前
ffplay音频SDL播放处理
ffmpeg
cuijiecheng20182 天前
音视频入门基础:MPEG2-TS专题(7)——FFmpeg源码中,读取出一个transport packet数据的实现
ffmpeg·音视频