FFmpeg在windows下编译

FFmpeg在windows下编译

工具介绍

  • Cygwin(Cygnus Windows) 在windows下运行的类Unix环境
  • MinGW(Minimalist GNU for Windows) windows上的GNU工具集,与MSYS结合编译ffmpeg
  • VS(Visual Studio 2015/2017…) 和MSYS配合编译ffmpeg
  • MSYS2(Minimal SYStem 2) 一个小型的GNU环境,包含bash,make等等
Cygwin

直接安装使用,Cygwin进行了linuxAPI到widowsAPI的转换,使用Cygwin编译的.exe文件需要挂载一个cygwin.dll库才能在windows下运行,好处是不必修改原来代码里的对linux系统API的调用,缺点是是由于调用系统API经过转义执行效率有损失。

MinGW + MSYS2

官方推荐的方式,不必依赖三方dll,直接编译出windows原生程序,编译方式也与在linux下保持一致

VS + MSYS2

使用VS内置工具链编译

MinGW + MSYS2 方式编译

  • 下载并安装MSYS2
    https://www.msys2.org/

  • 在MSYS2中安装依赖包

  • pacman -S make gcc diffutils pkg-config nasm
    pacman是一个包管理工具,通过该指令安装需要的软件

  • 安装sdl2,如果没有sdl2,无法编译出ffplay
    pacman -Ss sdl2 以sdl2为关键字搜索相关的包,其中会有形式如下的包信息

    mingw64/mingw-w64-x86_64-SDL2 2.0.14-2
      A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard (Version 2) (mingw-w64)
    

    使用安装指令安装即可

  • 下载ffmpeg
    http://ffmpeg.org/download.html

  • 编译ffmpeg
    运行 --prefix参数指定了install的路径

    ./configure --prefix=D:/work_space/work_dir/av/ffmpeg/ffmpeg-4.4/output_win64
    make -j 8
    make install
    

    这样会产生几个exe但并不会生成lib和dll
    带上 --enable-shared 即可生成lib和dll

  • 拷贝依赖dll
    直接运行install目录中下的 {install_dir}/bin/ffplay.exe会提示缺少依赖库,从sys2的安装目录msys64/mingw64/bin拷贝运行依赖库到ffplay.exe同级目录即可

VS + MSYS2编译

  • 安装VS

  • 设置VS环境变量
    在windows的cmd任意目录中执行环境变量, 执行环境变量设置脚本
    注需要在以管理员权限运行的终端中执行,执行后不要退出终端
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat

  • 关于MSVC几个编译器名称的解释
    x86:编译器为x86版本,输出文件为x86。
    amd64_x86:编译器为amd64版本,输出文件为x86。
    amd64:编译器为amd64版本,输出文件为amd64。
    x86_amd64:编译器为x86版本,输出文件为amd64。

  • 修改msys2_shell文件
    rem set MSYS2_PATH_TYPE=inherit
    修改为
    set MSYS2_PATH_TYPE=inherit

  • 执行msys2_shell.cmd,进入msys2的shell中
    msys2_shell.cmd -mingw64 -use-full-path
    这里需要提前将msys2_shell.cmd的路径加入环境变量,之前设置的VS的环境变量会在mys2中被自动继承

  • 运行configure

    ./configure --toolchain=msvc --prefix=D:/work_dir/ffmpeg-5.0/release --enable-cross-compile --enable-shared
    
    // 如果是编译调试库
    ./configure --toolchain=msvc --prefix=D:/work_dir/ffmpeg-5.0/debug --enable-debug --disable-optimizations --disable-asm --disable-stripping --enable-cross-compile --enable-shared
    注意一定要加--disable-stripping, 如果不加此选项,ffmpeg在编译时,会使用strip去掉符号信息。
    
    // 硬件加速则加上,ffmpeg支持多种硬件接口这里使用dxva2
    --enable-dxva2 (Direct-X Video Acceleration API,)
    
    make -j8
    make install
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值