WIN10 编译ffmpeg(包含ffplay)

Posted cloud_yq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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编译

ubuntu11.04 编译ffmpeg2.7 并生成 ffplay进行流媒体測试

源代码安装方式:

1. 先下载ffmpeg 安装包

到官网上 http://ffmpeg.org/download.html#releases 下载。选择Download gzip tarball. 当然也能够用git的方式下载。

先不安装。

2. 安装SDL库

SDL 是一套多媒体开放库,是生成ffplay必要的库。

sudo apt-get install libsdl1.2-dev
这样就能够在 /usr/include/下看到新生成的SDK库。

之后安装一些依赖库:

sudo apt-get install libsdl-image1.2-dev libsdl-mixer1.2-dev  libsdl-ttf2.0-dev libsdl-gfx1.2-dev

3. 安装一些依赖库:

sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libMP3lame-dev libsdl1.2-dev libtheora-dev libx11-dev  zlib1g-dev

3. 安装x264 (可选择性安装 可能临时用不到)

x264是一个开源的视频编码函数库。

安装方式是通过git下载源代码安装,路径无所谓:

git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo make install

最后会在/usr/lcoal/bin以下看到 x264 的可运行文件。这个脚本临时用不到。

4. 最后就是编译 ffmpeg

tar -zxf   fmpeg-2.7.2.tar.gz

cd ffmpeg-2.7.2

./configure --enable-memalign-hack --enable-static --enable-libx264

make && sudo  make install

最后能够在当前文件夹下生存的ffplay.

以下測试一下:

./ffplay   yourfile

能够看到已经在播放了。


以上是关于WIN10 编译ffmpeg(包含ffplay)的主要内容,如果未能解决你的问题,请参考以下文章

Windows10平台编译ffmpeg 4.0.2,生成ffplay

ubuntu11.04 编译ffmpeg2.7 并生成 ffplay进行流媒体測试

ubuntu下编译ffmpeg+SDL+ffplay提取motion vector

ffmpeg中关于ffplay部分的概要分析-2

win10编译ffmpeg

win10下使用msys+vs2019编译ffmpeg源码