win10 ffmpeg 编译

394 阅读2分钟

1. MSYS2 + MinGW64 方式

1. MinGW64 下载安装

# 下载地址
https://www.mingw-w64.org/downloads/#mingw-builds

# 安装
双击 mingw64-w64-install.exe

# 选择
Version: 8.1.0
Architecture: x86_64
Threads: posix # 见参考 5.1
Exception: dwarf # 见参考 5.2
Build revision: 0

# 完成
一直点下一步

# 环境变量
1. PC -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量
2. 新建 -> Name: MINGW_PATH Value: D:/MinGW64/bin
3. 选中 Path -> 编辑 -> 新建 添加 %MINGW_PATH%

2. MSYS2 下载安装

# 下载地址
https://msys2.org

# 安装
双击 msys2-x86_64-20210725.exe

# 完成
点击下一步,勾选 "完成后打开控制台"

# 安装 make
pacman -S make

# 编辑 mingw64.ini
取消 MSYS2_PATH_TYPE=inherit 注释。方便 mingw64.exe 访问到环境变量 MINGW_PATH

3. YASM 下载安装

# 下载地址
https://yasm.tortall.net/Download.html

# 安装
下载 win64.exe,下载后文件名为: yasm-1.3.0-win64.exe
重命名为 yasm.exe,剪切此文件到 MinGW64 下的 bin 目录

4. SDL 下载安装

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

# 安装
下载 SDL2-2.0.16-win32-x64.zip (64-bit Windows)
解压文件 SDL2.dll 文件拷贝到 MinGW64 根目录下 

上面的不行,下载 SDL2-2.0.16.zip-GPGsigned 源码
手动编译,编译结果拷贝到 MinGW64 下的 bin、include、share 目录

5. libx264 下载安装

# 下载地址 

# 编译安装

 6. DirectShow 下载安装

主要为了捕获 DirectShow 输入设备数据,好像只有 windows 上的音视频用到这种
MinGW64 自带支持,不用安装

7. OpenAL 下载安装

configure 文件内容,--enable-openal 默认关闭,可以不用安装

8. pkg-config 下载安装

1. glib
# 下载地址
https://download-fallback.gnome.org/binaries/win64/

# 安装
拷贝 libglib-2.0-0.dll 文件到 MinGW64 bin 目录下

2. gettext-runtime
# 下载地址
https://download-fallback.gnome.org/binaries/win64/

# 安装
拷贝 libintl-8.dll 文件到 MinGW64 bin 目录下

3. pkg-config
# 下载地址
https://download-fallback.gnome.org/binaries/win64/

# 安装
拷贝 pkg-config.exe 到 MinGW64 bin 目录下

9. diffutils 下载安装

# 下载地址
https://sourceforge.net/projects/gnuwin32/files/diffutils/2.8.7-1/diffutils-2.8.7-1.exe

# 安装
双击 diffutils-2.8-7-1.exe
安装完成,拷贝 diffutils/bin 目录下的所有文件到 MinGW64 bin 目录下

10. lib.exe 处理

没明白,这是啥?

11. configure

# 配置说明
打开 configure 文件,有注释说明

# 最简单 configure 配置
双击打开 mingw64.exe,弹出控制台,输入:
./configure --prefix=../ffmpeg

12. make && make install

# make 开启 4 任务编译加速,不写就无限任务卡电脑
make -j 4

# make install 安装
make install

2. MSYS2 包管理方式

1. 安装依赖

# make
pacman -S make

# diffutils
pacman -S diffutils

# yasm
pacman -S yasm

# pkg-config
pacman -S pkg-config

# mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-gcc

# mingw-w64-i686-gcc 可选
pacman -S mingw-w64-i686-gcc

2. SDL 和 libx264 安装

# 目录结构如下
ffmpeg
  - bin
  - include
  - lib
  - share
ffmpeg_src
  - ffmpeg
  - SDL_2.0
  - libx264

# 编译 SDL
cd /g/ffmpeg_src/SDL_2.0
./configure --prefix=/g/ffmpeg
make && make install

# 编译 libx264
cd /g/ffmpeg_src/libx264
PKG_CONFIG_PATH=/g/ffmpeg/lib/pkgconfig ./configure --prefix=/g/ffmpeg --enable-static
make && make install

3. 编译 ffmpeg

# congiure
cd /g/ffmpeg_src/ffmpeg
PKG_CONFIG_PATH=/g/ffmpeg/lib/pkgconfig ./configure \
--prefix=/g/ffmpeg/ \
--enable-gpl \
--enable-libx264 \

# 安装
make && make install

3. CygWin 包管理方式

1. 依赖安装

重新 运行 setup-x86_64.exe,Search 以下依赖,进行安装
# SDL
libSDL2
libSDL2_image
libSDL2_mixer
libSDL2_ttf
libSDL2_Pango
libSDL2_gfx14
# yasm
# diffutils
# pkg-config
# make
# binutils
# cmake
# make
# gcc-core
# gcc-g++
# gdb

4. 交叉编译

1. centos 平台

2. windows 10 WSL

5. 参考

5.1 stackoverflow.com/questions/1…

5.2 stackoverflow.com/questions/1…

5.3 stackoverflow.com/questions/1…

5.4 trac.ffmpeg.org/wiki/Compil…