2024年5月26日发(作者:)
视频解码中用到的ffmpeg交叉编译技巧
一、简介
FFmpeg是一个集录制,转换,音/视频编码解码功能为一体的完整的开源解决方案。
FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。
由 于ffmpeg是基于linux开发的,源代码和windows下最常见的visual studio提
供的c/c++编译器不兼容,因此不能直接使用msvc++编译,想要使用ffmpeg,需要在
windows下配置一个类似Linux的 编译环境,并将ffmpeg编译为二进制库以后,再利
用其进行进一步开发。
目前,windows下可直接使用的最新版本是由ffmpeg工程组,于2008年4月份发
布的ffmpeg full sdk v3.2。该sdk尽可能的集成了更多的编解码器。
在 应用中,使用该开发包存在2个缺陷,第一,该sdk编译基于ffmpeg r12790,
编解码效率上,当前已经有了较大的提升;第二,该开发包包含了很多不需要的编解码器,
需要尽可能减少开发包的体积及关联的库的个数。基于以 上需求,需要自己编译出
windows下可用动态库及静态库。
使 用到的库文件有4个,libavcodec,libavformat,libavutil,libswscale,其中库
libavcodec,libavformat用于对媒体文件进行处理,如编解码;libavutil是一个通用的小
型函数库,该库中实现了CRC校验码 的产生,128位整数数学,最大公约数,整数开方,
整数取对数,内存分配,大端小端格式的转换等功能,libswscale主要用于图像格式转换
及缩放。 因效率的需要,我们选择了ffmpeg-mt版本,同时通过配置编译尽量减少相关
文件的体积。
网上类似编译过程说明较多,但实际编译过程中碰到一些问题,这些问题的解决花费
了不少时间,本文档对这一过程进行记录,以便后续维护及学习。
二、编译环境搭建
windows下ffmpeg编译环境有多种可选择方案。这里我们使用MinGW+MSYS。
1. 下载mingw+msys并安装
/projects/mingw/
mingw,默认安装,在choose components时选择g++ compiler及MinGW Make
Msys,默认安装,
Do you wish to continue with the post install【yn】,y!
Do you have mingw installed?【yn】, y
Where is your mingw installation? C:/mingw
在c:/mingw/1.0/的第一行添加
E:Program FilesMicrosoft Visual Studio
发布评论