win7(x64)编译ffmpeg

来源:互联网 发布:ibatis执行sql语句 编辑:程序博客网 时间:2024/06/02 17:47

        公司最近的发展方向似乎还灭有定下来,年前提出的视频平台,目前领导间似乎没有完全商榷下来,年后来了,搭建了服务器,处理了一些繁琐的小事,似乎不知道干嘛了,有一个android平板端的程序需要修改,先放一下吧,把纠结了很久的windows下ffmpeg编译做一个整理。

 

        网上看了很多关于windows下编译ffmpeg的文章,都大同小异,效果也没有想象的那么顺利,遇到很多问题,现在把自己的编译过程跟他家分享一下。

===========================================================================

1.系统环境

    操作系统:windows7(x64) 旗舰版 Service Pack 1

 

2.工具需求

    MinGW

        windows下没有编译ffmpeg的环境,我们需要安装MinGW来模拟类似linux的环境,安装gcc等编译器。

        由于下载了官网最新的MinGW总是不成功,可能是组件没有安装全的关系,这边我下载了别人测试通过的mingw-get-inst-20120426.exe

        可以从百度获得他。

    ffmpeg源码

        这个是编译的主人公。哈哈!

        下载地址:http://www.ffmpeg.org/releases/

        选择最新的版本进行下载,本人下载的是ffmpeg-2.1.tar.gz

        ffpmeg的源码也可以同svn去下载,该方法请自己百度。

    SDL

        SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库。

        没有他的话,ffmpeg貌似就无法生成ffplay.exe

        下载地址:http://www.libsdl.org/download-1.2.php

         我们下载源码即可。

 

3.编译过程

    安装MinGW

        双击下载的mingw-get-inst-20120426.exe即可进行安装,本人使用了默认的安装路径C:\MinGW,安装过程一路Next,选择组件时选择一下组件

            C Compiler(系统默认的)

            C++ Compiler

            MSYS Basic System

            MinGW Developer ToolKit

        然后Next,紧接着就是漫长的等待,他会下载很多东西。

       

 经过漫长的等待,终于是成功安装MinGW了。

修改msys.bat

        我的MinGW是安装在默认路径C:/MinGW下的,我们使用文本编辑软件修改C:\MinGW\msys\1.0\msys.bat文件,在他的最开始添加一句

            call "D:\IDE\VS2010\VC\bin\vcvars32.bat"

        D:\IDE\VS2010是我vs2010的安装环境。这步骤是为了生成MSVC++可以使用的ffmpeg库。(这是我看了别人的博客做出的理解,不知道是不是有问题,望对这方面了解的人指出^。^)

 

编译SDL

        我们解压我们下载的SDL源码,将其放到ffmpeg源码的目录下,ffmpeg的源码我放在D:\ffmpeg-2.1\ffmpeg-2.1路径下,SDL源码所在的路径就为:D:\ffmpeg-2.1\ffmpeg-2.1\SDL-1.2.15。

        打开C:\MinGW\msys\1.0\msys.bat,进入到通过指令进入到sdl所在的目录执行

           ./configure --prefix-/usr

           Make

           Make install

        编译后在C:\MinGW\msys\1.0D的bin,include,lib目录下会生成相应的文件。

 

配置编译ffmpeg

        我们打开C:\MinGW\msys\1.0\msys.bat出现熟悉的控制台界面。通过指令进去我们的ffmpeg目录下。

        配置:./configure --enable-static --prefix=C:/MinGW/msys/1.0 --extra-cflags="-fno-common"

        编译过程中可能会出现yasm/nasm not found or too old.Use --disable-yasm for acrippled build.

                解决这个问题有两种办法:

                    (1)按照他的提示,添加--disable-yasm配置属性。

                    (2)下载yasm,yasm是用于汇编的编译器,我们可以从http://yasm.tortall.net/Download.html下载yasm(根据自己的需求与系统环境选择对应

                        的版本),并将他重命名为yasm.exe,然后放置于C:\MinGW\msys\1.0\bin下。

       接下来,还会遇到这样的问题:non pthread threading without atomics not supported,try --enable-pthreads or...

       我们就通过系统提示的添加--enable-pthreads配置属性来解决它。

 

        配置完成后,执行 make

                                      make install

        编译完成后就会发现子啊C:\MinGW\msys\i.0下多了一个local目录,里面有bin,include,lib,share子目录。

运行测试

        打开C:\MinGW\msys\1.0\msys.bat,进入ffplay.exe所在的目录,使用指令就可以播放视频了

        ffplay.exe 视频名.视频格式

        运行时会提示缺少dll库文件(libiconv-2.dll,pthread2GC.dll),网上下载响应的库文件,放置ffplay.exe同目录下即可。

       

似乎播放效果不好,再找找原因吧。

 

===========================================================================

如果需要编译过程用到的所有文件,请点击这里

1 0