博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FFMPEG WINDOWS平台编译
阅读量:4154 次
发布时间:2019-05-25

本文共 3521 字,大约阅读时间需要 11 分钟。

FFmpeg是在Linux平台下开发的,但它同样也可以在其它操作系统环境中编译运行,本文介绍的就是在windowsXP下编译FFmpeg。

一 准备环境:


1 下载 mingw 和 MSYS


去 http://sourceforge.net/projects/mingw/  下载


A 点击“DownLoad mingw-get-inst-...exe”;


B 切换到页面:download? Check your browser's security bar, or try a direct link, or try another mirror. ;


C 点击“direct link”下载类似:mingw-get-inst-20110802.exe 的文件。


提示:msys此处就不用下载了,mingw-get-inst-20110802.exe 中已经包含了msys1.0,后面安装的时候就可以看到该选项。


2 下载 yasm


ffmpeg编译里面的汇编代码需要yasm.exe  


去官网:http://yasm.tortall.net/Download.html 下载


直接下载:Win32 .exe (for general use on 32-bit Windows)


文件名为:yasm-1.1.0-win32.exe


3 下载 ffmpeg


ffmpeg可以到 http://www.ffmpeg.org/releases/ 下载


本人选择的是最新版本:ffmpeg-0.8.5.tar.gz


文件名为:ffmpeg-0.8.5.tar.gz


4 下载 SDL


SDL下载可以到:http://www.libsdl.org/download-1.2.php


选择:SDL-1.2.14.tar.gz - GPG signed


此版本需要自己编译,后面会解释为什么下载该版本,而不下载编译好的SDL-devel-1.2.14-mingw32.tar.gz (Mingw32)


5 下载 pthreadGC2.dll

pthreadgc2.dll 是功能强大的处理数字化影视作品编辑软件premiere6运行所需的一个DLL文件。这是一个无威胁文件。属于Open Source Software community project的文件。直接去baidu.com三搜索下载就可以了。


二 编译步骤


1 安装 mingw 和 msys


    执行下载文件:mingw-get-inst-20110802.exe,


    在第3步选择“Download latest repository catalogues”


    选择安装路径:C:\MinGW(我直接采用默认路径,未做修改)


    在“Select Components”步骤中选择:


    √  C Compiler (默认且一定选择)


    √  C++ Compiler


    √  MSYS Basic System(选择此项将会安装msys,msys则不需要另外安装)


    √  MinGW Developer ToolKit


    等待安装完成!(需要等待一定的时间,因为安装过程需要下载文件,可想而知,网速越快,安装越快)


    安装完成后,在C:\MinGW目录下可以看到 msys 文件夹,msys也已经安装。


2 配置 msys.bat 批处理文件


    为了方便VS200X以及VS2010调用ffmpeg的动态库,可以通过配置让ffmpeg编译时产生windows下调用dll对应的lib,当然,如果你没有这个需要,那么就可以省略以下处理,直接进入步骤3。


    进入:C:\MinGW\msys\1.0\文件夹,使用UltraEdit打开msys.bat文件,在文件的最最前面加入如下一行:


    call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"


    其中“D:\Program Files\Microsoft Visual Studio 10.0”为你机器上安装VS200X或VS2010的目录,我的电脑安装的是VS2010,并且安装在了D盘。文件修改后保存即可。


3 配置 yasm


    为了减少配置环境变量的麻烦,本处直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,并放到系统目录下:C:\WINDOWS\system32。


4 解压ffmpeg 与 SDL


    ffmpeg-0.8.5.tar.gz 的解压目录您可以直接选择,本人解压到:D:\ffmpeg中,解压后目录为:D:\ffmpeg\ffmpeg-0.8.5


    SDL-1.2.14.tar.tar 解压到 D:\ffmpeg\ffmpeg-0.8.5 目录下,解压后的目录结构为:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14


5 编译SDL


    双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,


    切换到SDL目录:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14,切换方法如下:


    $ cd /d


    $ cd ffmpeg


    $ cd ffmpeg-0.8.5


    $ cd SDL-1.2.14


    再执行以下命令:


    $ ./configure --prefix=/usr 回车等待…


    $ Make 回车等待…


    $ make install 回车等待…


    编译完成后,在C:\MinGW\msys\1.0的bin、include和lib文件夹下可以看到编译结果。


    直接编译ffmpeg时,发现未生成ffplay.exe,


    configure的时候提示信息如下:


    SDL support  no


    所以需要开启SDL,本人头天接触这东西,不知道使用什么方法可以开启,但通过编译SDL后


    SDL support  yes


    如果你的 SDL 已经是开启状态,你可以直接使用下载中提到的编译好的压缩包SDL-devel-1.2.14-mingw32.tar.gz,直接解压,并把解压包中的 bin、include和lib文件夹中的文件复制到D:\ffmpeg\ffmpeg-0.8.5,与步骤六相同,只是不在从C:\MinGW \msys\1.0中复制。


6 拷贝编译结果:


    C:\MinGW\msys\1.0  到 c:/mingw下 覆盖


    bin下的SDL.dll、sdl-config拷贝到 bin中


    include下的 SDL文件夹拷贝到 include中


    lib下的libSDL.a、libSDL.dll.a、libSDL.la和libSDLmain.a拷贝到 lib中


7 修改sdl-config配置文件


    使用UltraEdit打开D:\ffmpeg\ffmpeg-0.8.5\bin下的 sdl-config文件


    把 prefix=/usr 该成: prefix=c:/mingw


    其中:c:/mingw 为 mingw的安装路径,请根据你的安装进行修改。


8 编译 ffmpeg


    双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,


    切换到SDL目录:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14,


    切换方法如下:


    $ cd /d


    $ cd ffmpeg


    $ cd ffmpeg-0.8.5


    如果你的“MinGW32”没有关闭,可以直接切换路径到:D:\ffmpeg\ffmpeg-0.8.5。


    再执行以下命令:


    $ ./configure --enable-shared --disable-static --enable-memalign-hack


    请耐心等待一段时间

  $ make

   需要等待很长一段时间,等待编译结束。


    为了汇总编译结果,请继续执行以下命令:


    $ make install


    等待完成,在C:\MinGW\msys\1.0\local中将会生成 bin、include、lib等文件夹,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和头文件等。


9 运行测试


直接双击运行”ffplay.exe”,如果提示没有“pthreadGC2.dll”文件,你可以包“pthreadGC2.dll”直接拷贝到当前目录,也可放到系统目录C:\WINDOWS\system32中。

avcodec.lib avformat.lib swscale.lib avutil.lib

转载地址:http://pwwxi.baihongyu.com/

你可能感兴趣的文章
【Python基础7】字典
查看>>
【Python基础8】函数参数
查看>>
【Python基础9】浅谈深浅拷贝及变量赋值
查看>>
Jenkins定制一个具有筛选功能的列表视图
查看>>
【Python基础10】探索模块
查看>>
【Python】将txt文件转换为html
查看>>
[Linux]Shell脚本实现按照模块信息拆分文件内容
查看>>
idea添加gradle模块报错The project is already registered
查看>>
在C++中如何实现模板函数的外部调用
查看>>
在C++中,关键字explicit有什么作用
查看>>
C++中异常的处理方法以及使用了哪些关键字
查看>>
内存分配的形式有哪些? C++
查看>>
什么是内存泄露,如何避免内存泄露 C++
查看>>
栈和堆的空间大小 C++
查看>>
什么是缓冲区溢出 C++
查看>>
sizeof C++
查看>>
使用指针有哪些好处? C++
查看>>
引用还是指针?
查看>>
checkio-non unique elements
查看>>
checkio-medium
查看>>