windows7下ffmpeg编译支持x265

来源:互联网 发布:妈妈讲故事软件 编辑:程序博客网 时间:2024/06/05 16:18

一. 下载ffmpeg

之前的2.1.1版本的ffmpeg不支持x265,在http://www.ffmpeg.org/releases/下载2.3版本ffmpeg-2.3.tar.gz,解压到D:\MinGW\msys\1.0\home\Administrator\source,解压出ffmpeg-2.3文件夹。


二. mingw编译 x265

准备工作,利用tortoiseHg的Locate下载好x265文件,位于D:\MinGW\msys\1.0\home\Administrator\source\x265。

下载x265源代码

通过Tortoisehg下载x265, x265的下载地址为https://bitbucket.org/multicoreware/x265/src

TortoiseHg安装完成后,新建x265文件夹(如D:\x265),在D:\x265鼠标右键菜单TortoiseHg->clone

安装在D:\MinGW\msys\1.0\home\Administrator\source\x265

1. 双击msys.bat打开mingw32

cd /d/MinGW/msys/1.0/home/Administrator/source/x265/build/msys

执行make-Makefiles.sh


出现CMake



配置好vld,yasm.exe,support_winxp, 输出路径(即make install安装路径), Configure, Generate, File->exit.



mingw环境下: make


等待完成100%,



然后执行make install


x265输出路径(C:\ProgramFiles (x86)\x265)下 include && lib && bin 拷贝到D:\MinGW\msys\1.0\home\Administrator\install\对应的include&& lib && bin下面.


三. 编译ffmpeg

mingw32 下面进入/d/MinGW/msys/1.0/home/Administrator/source/ffmpeg-2.3

执行configure(增加libx265)

./configure   --prefix=/home/Administrator/install--extra-cflags=-I/home/Administrator/install/include  --extra-ldflags=-L/home/Administrator/install/lib --enable-gpl   --enable-version3   --enable-memalign-hack --enable-nonfree--disable-static --enable-shared --disable-doc --disable-htmlpages--disable-manpages --disable-podpages --disable-txtpages --enable-bzlib--enable-zlib --enable-iconv --enable-libx264 --enable-libx265 --enable-libxavs--enable-libmp3lame --enable-libfaac --enable-libfdk-aac --enable-libvo-aacenc--enable-libvo-amrwbenc --enable-libopencore-amrnb --enable-libopencore-amrwb


配置结束


执行make


编译出错:

以libavutil/file.c为例

/**********************************************************************/

In fileincluded from libavutil/file.c:27:0:

d:\mingw\include\unistd.h:79:1:error: expected ',' or ';' before 'int'

 int __mingw_sleep( unsigned long, unsignedlong );

 ^

In fileincluded from libavutil/file.c:27:0:

d:\mingw\include\unistd.h:105:1:error: expected ',' or ';' before 'int'

 int nanosleep( const struct timespec *, structtimespec * );

 ^

d:\mingw\include\unistd.h:125:28:error: expected ',' or ';' before 'usleep'

 int _cdecl __MINGW_NOTHROW usleep( useconds_t)__MINGW_ATTRIB_DEPRECATED;

                            ^

d:\mingw\include\unistd.h:138:10:error: conflicting types for '_cdecl'

 unsigned _cdecl __MINGW_NOTHROW sleep(unsigned );

          ^

d:\mingw\include\unistd.h:125:5:note: previous declaration of '_cdecl' was here

 int _cdecl __MINGW_NOTHROW usleep( useconds_t)__MINGW_ATTRIB_DEPRECATED;

     ^

d:\mingw\include\unistd.h:138:33:error: expected ',' or ';' before 'sleep'

 unsigned _cdecl __MINGW_NOTHROW sleep(unsigned );

                                 ^

d:\mingw\include\unistd.h:153:12:error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ftruncate'

 int _cdecl ftruncate( int, off_t );

            ^

make:*** [libavutil/file.o] Error 1

/**********************************************************************/

 

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavutil\file.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavutil\file_open.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavutil\log.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavutil\random_seed.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavutil\time.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavformat\cache.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavformat\file.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavformat\hdsenc.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavformat\id3v2.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavformat\mov.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavformat\smoothstreamingenc.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavformat\swfdec.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavformat\swfenc.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\cscd.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\dxa.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\lcldec.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\lclenc.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\pngdec.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\pngenc.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\svq3.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\tiff.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\tiffenc.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\tscc.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\zmbv.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\libavcodec\zmbvenc.c

D:\MinGW\msys\1.0\home\Administrator\source\ffmpeg-2.3\ffmpeg.c

对策:#include<unistd.h> 或 #include <zlib.h> 或 #include"swf.h" 前面添加#include<windows.h>

 

make install

提示avcodec-55.dll 文件已存在,应该是误报,再执行一遍make install



最终执行完毕



测试:将h264文件app.h264 转码为h265文件app.hevc

ffmpeg.exe -i /d/app.h264 -vcodec libx265 /d/app.hevc


















原创粉丝点击