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进行流媒体測试