求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查看动态库和可执行程序的属性信息。