Windows环境编译ffmpeg

一、安装编译环境

window10 环境下 ffmpeg 的编译方式主要有以下2种:

1,MSYS2 + MinGW

2,MSYS2 + MSVC

ffmpeg 的源码是跨平台的,通过 configure(shell脚本) 实现不同平台的编译规则。在 configure 的时候指定 --toolchain=msvc 就可以 使用 msvc 来编译 ffmpeg。

由于 window 的原生 CMD 命令行无法执行shell脚本,也没有 make 之类的命令,所以需要装 MSYS2 软件。

MSYS2 是什么?MSYS2 实际上就是一个linux 仿真环境,装了 MSYS2 就可以运行 ffmpeg 的configure 编译脚本了。
 

 这应该是所需要的最少的软件和配置:

 MSYS2(重要!):https://www.msys2.org/, 傻瓜式安装,但是要自己配置环境变量,下载后在开始菜单能看到如下4个程序,我们使用的是MSYS2 MinGW 64-bit,建议安装目录是D:\msys64

路径不能有中文,不能有空格。

给 MSYS2 添加了中科大的源。

简单的说 msys64\etc\pacman.d 目录下有三个文件。

mirrorlist.msys

##
## MSYS2 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/

mirrorlist.mingw64

##
## 64-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
Server = http://repo.msys2.org/mingw/x86_64
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
Server = http://www2.futureware.at/~nickoe/msys2-mirror/x86_64/
Server = http://mirror.bit.edu.cn/msys2/REPOS/

mirrorlist.mingw32

##
## 32-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
Server = http://repo.msys2.org/mingw/i686
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/

启动软件,依次在 msys2 命令框运行以下 3 行命令

pacman -S mingw-w64-x86_64-toolchain
 
pacman -S base-devel
 
pacman -S yasm nasm gcc

二、下载源码

下载 ffmpeg 和 x264 的代码,并放到 msys2 的安装目录下。如图

ffmpeg 到 gitee 上下载,x264 到 videolan 上下载。

早期ffmpeg版本,例如4.2版本是没有 264 编码器的,只是自带了一个264的解码器。因为 x264 , fdk-aac ,这些库的版权不是ffmpeg的,所以没有直接集成进ffmpeg。ffmpeg也在开发自己的编解码器,4.4版的时候终于开发出了 h264_mf 跟 aac_mf 。

编解码器都是按照标准实现的,例如用 h264_mf 编码的mp4文件,同样能用 x264 的库去解码,反之亦然。除非项目需要,一定要用 x264 , fdk-aac 来进行编解码,否则用 ffmpeg 4.4.1 版本自带的 h264 ,acc 编解码器即可。

mp3 的编解码器,ffmpeg 4.4 也自带了,叫 mp3_mf ,所以也不需要下载编译 lame 库。
 

【参考文档】

Windows下编译ffmpeg的几种方式_windows编译ffmpeg_程序员~彭国庆的博客-CSDN博客

说明:msvc 需要手动选择 Win32 还是 x64 工具。

三、MinGW 编译 ffmpeg

说明:目录必须全部英文字母,不能有中文。

创建脚本文件,并执行。

build_ffmpeg.sh

basepath=$(cd `dirname $0`;pwd)

echo ${basepath}

cd ${basepath}/ffmpeg
pwd

./configure --prefix=${basepath}/ffmpeg_install --enable-shared --enable-gpl

make clean
make
make install

四、MSVC 编译 ffmpeg

说明:目录必须全部英文字母,不能有中文。

创建脚本文件,并执行。

build_ffmpeg_msvc.sh

basepath=$(cd `dirname $0`;pwd)

echo ${basepath}

cd ${basepath}/ffmpeg-6.0
pwd

./configure --prefix=${basepath}/ffmpeg_msvc_install --enable-shared --enable-gpl --toolchain=msvc

make clean
make
make install

五、ffmpeg 支持 265 的 RTMP 协议

参考git:GitHub - CDN-Union/H265: H265/HEVC Specification

例子:ffmpeg 6.0 需要修改的 3 个文件:

/libavformat/flv.h

/libavformat/flvdec.c

/libavformat/flvenc.c

https://download.csdn.net/download/ztz123123/87700733

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值