WIN10 编译ffmpeg(包含ffplay)

1、安装MSYS2

       Win10 搭建MSYS2环境_cloud_yq的博客-CSDN博客

2、编译SDL

        SDL是编译生成ffplay的基础,不需要生成ffplay可不编译SDL。

        1)下载地址:https://www.libsdl.org/download-2.0.php

        2)由于采用MSYS2下编译,下载SDL2-2.0.22.tar.gz - GPG signed这个包。(将SDL2-2.22.tar.gz.sig放到SDL2-2.22.tar.gz的解压目录下)

        3)编译步骤

              step1、mkdir /usr/local/SDL2    这个路径用来存放SDL编译后文件,可改(改后后续其他地方也要同步修改)

              step2、进入SDL2-2.22.tar.gz的解压目录,执行./configure --prefix=$MSYS2/usr/local/SDL2/   这里$MSYS2表示自己的MSYS2安装目录(是自己情况修改)。

              step3、make

              step4、 make install

              编译成功之后会在$MSYS2/usr/local/SDL2/  相应的库目录(没有生成需要仔细检查以上三步是否有报错):

        4)、记录编译过程一个报错,在SDL2-2.0.18和SDL2-2.0.22版本都遇到了。make步骤编译SDL_windows_gaming_input.c,报错信息如下:

        make: *** [makefile:730: build/sdl_windows_gaming_input.lo] error 1

        这里应该是windows定义类型和linux有差别,需要修改下 SDL_windows_gaming_input.c($MSYS2/home/source/SDL2-2.0.18/src/joystick/windows)文件,增加新的宏(此处是参考SDL issue解决,路径贴在末尾)。修改内容如下:

//增加宏
#ifdef __MINGW32__
#define __FIReference_1_int __FIReference_1_INT32
#define __FIReference_1_int_get_Value __FIReference_1_INT32_get_Value
#define __FIReference_1_int_Release __FIReference_1_INT32_Release
#endif

//源代码
struct joystick_hwdata
{
    __x_ABI_CWindows_CGaming_CInput_CIRawGameController *controller;
    __x_ABI_CWindows_CGaming_CInput_CIGameController *gamecontroller;
    __x_ABI_CWindows_CGaming_CInput_CIGameControllerBatteryInfo *battery;
    __x_ABI_CWindows_CGaming_CInput_CIGamepad *gamepad;
    __x_ABI_CWindows_CGaming_CInput_CGamepadVibration vibration;
    UINT64 timestamp;
};

3、编译ffmpeg        

    1)、需要配置下环境

        在mingw64命令窗口中执行一下命令:

1、Pacman -S nasm

2、Pacman -S yasm

3、Pacman -S make cmake

4、 Pacman -S diffutils

    2)、设置SDL2的库目录

        export PATH="/usr/local/SDL2/bin/:$PATH"     

   3)、ffmpeg编译指令

1、./configure --enable-shared --disable-static --enable-debug --enable-sdl2 --extra-cflags='-I/usr/local/SDL2/include/SDL2/' --extra-ldflags='-L/usr/local/SDL2/lib/' --prefix=/home/source/ffmpeg_build/

2、make

3、make install

编译成功后生成的库文件就在 /home/source/ffmpeg_build/ 目录下。

4、参考文章

Windows下编译可调试的ffmpeg, 包含ffplay_shizheng163的博客-CSDN博客

compilability of WGI code against MinGW headers · Issue #5589 · libsdl-org/SDL (github.com)

FFmpeg:编译(Windows)_满嘴跑火车的小土匪的博客-CSDN博客_ffmpeg windows编译

猜你喜欢

转载自blog.csdn.net/yq327115059/article/details/125954717