求centeOS 64位下ffmpeg的编译。

软件安装

(1).MinGW+微软系统安装

下载MSYS并解压到E:/ffmpeg64/msys目录。

将MinGW-w64下载到E:/ffmpeg64/msys/mingw64目录。

启动msys.bat,打开一个类似Linux的终端,导入mingw64的环境变量。

“echo”导出路径=。:/local/bin:/mingw 64/bin:/bin ' & gt;。轮廓

来源。轮廓

(2).SDL装置

下载SDL1.2.14,解压到e:/ffmpeg 64/SDL-1 . 2 . 14目录。

进入SDL-1.2.14目录,依次执行:

。/configure-host = x86 _ 64-w64-mingw 32

制造

进行安装

在编译过程中,发生了以下错误:

看一下SDL_dx5video.c的源代码,如下图所示,我们可以看到,如果启用了预定义的NONAMELESSUNION,那么就会引用u1和u2的结构,就会出现上面的错误。

解决方案是删除预定义的非命名符号。

另一个简单的解决方案是用SDL-1.2.15或SDL-2.0.3替换SDL图书馆。由于ffplay.c主要是利用SDL-1.2的接口实现的,所以如果使用SDL-2.0.3的话,需要修改ffplay.c的源代码。所以本文用SDL-1.2.15重新编译,生成SDL库,安装SDL-65438+。

编译过程完成,但是make install期间出现以下错误,提示“系统找不到指定的文件”,但是/bin/install和sdl-config都存在。

查询相关资料后发现,错误原因可能是终端在解释路径时出错,如:/problem-with-ran lib-while-running-make-install-for-SDL-TD 3282130 . html,当MinGW+Msys和Cygmin同时存在时,会出现路径冲突的问题。在Cygmin中,根目录“/”解释为当前目录的根目录,即“E:/”,Cygmin会将“/bin/install”解释为“E:/install”,导致“系统找不到指定文件”的错误。

解决方案:修改Makefile并重置安装路径。

(3).x264安装

下载x264,解压到E:/ffmpeg64/x264目录。

进入x264目录,依次执行:

。/configure-host = x86 _ 64-w64-Ming W32-enable-shared

制造

进行安装

(4).FFmpeg安装

下载FFmpeg1.2,解压到E:/ffmpeg64/ffmpeg1.2。

进入ffmpeg目录,依次执行:

复制代码

。/configure-enable-GPL-enable-libx 264-enable-shared-enable-static-arch = x86 _ 64-extra-cflags = '-I/local/include-I/local/cross-tools/i386-mingw 32/include/SDL '-extra-LD flags = '-L/local/lib-L/local/cross-tools/i386-mingw 32/lib '

制造

进行安装

复制代码

- extra-cflags用于指定头文件路径,而- extrac-ldflags用于指定库文件路径。

注意:一定要指定SDL库和x264库的头文件和库文件路径。

(5).验证安装

验证生成的ffmpeg工具是否可执行,用ffplay播放视频文件,看能否正常播放。

验证生成的动态库和可执行程序是否为64位,使用dumpbin查看动态库和可执行程序的属性信息。