vs2010下静态库裁裁剪ffmpeg

          因项目需要,需要在vs2010下裁剪ffmpeg,使得它只支持h264解码。

VS2010编译的工具和结果:https://download.csdn.net/download/shenhaiboqq/10571844

1、准备一下工具

    (1)Visual Studio vs2010

    (2)ffmpeg下载:可以到官网:http://ffmpeg.org/releases/ 下载,我使用的是ffmpeg-3.0.1版本

    (3)MinGW : http://www.mingw.org/ ,运行下载的MinGW安装管理器,包含msys。假设安装好后MinGW路径为:C:/MinGW ,则msys路径应为:C:/MinGW/msys 。将:C:/MinGW/bin和C:/MinGW/msys/1.0/bin加到系统path环境变量中;

安装可以参考:https://blog.csdn.net/cclovepl/article/details/70520412

    (4)yasm : http://yasm.tortall.net/ ,(for general use on 32-bit Windows), 改名叫yasm.exe,复制到:C:/MinGW/msys/1.0/bin 目录下; 

   (5)c99-to-c89 : https://github.com/libav/c99-to-c89/downloads , 将c99conv.exe和c99wrap.exe复制到:C:/MinGW/msys/1.0/bin 目录下;

 (6),C99头文件inttypes.h和stdint.h : http://code.google.com/p/msinttypes/downloads/list ,将此两个头文件复制到: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include 目录下(自行修改为自己的安装目录);

 

2、配置

1,复制:d/MinGW/msys/1.0/msys.bat 到同目录下,改名叫做msys_vs2010.bat,在msys_vs2010.bat开头部分添加:call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" ;

2,重命名 C/MinGW/msys/1.0/bin/link.exe 为link_renamed.exe ,这一步是防止这个link.exe与vc的link.exe发生冲突,编译完成之后记得修改回来;

3,打开msys_vs2010.bat,切换到ffmpeg目录下。

 

3、配置编译

1,配置:ffmpeg编译配置选项很丰富,详细请运行“./configure --help > ffmpegcfg.txt ”查看其选项。这里我的选项是:

 ./configure --enable-static --prefix=./vs2010_build --toolchain=msvc --disable-encoders --disable-debug --disable-protocols --disable-decoders --enable-decoer=h264  --disable-outdevs --disable-filters --disable-doc --disable-bsfs --disable-demuxers --enable-demuxer=h264 --disable-muxers --enable-muxer=h264 --disable-indevs --disable-parsers --enable-parser=h264

运行./configure之前先修改:configure文件下的 cc_default的cl改为c99wrap cl

msvc)
        # Check whether the current MSVC version needs the C99 converter.
        # From MSVC 2013 (compiler major version 18) onwards, it does actually
        # support enough of C99 to build ffmpeg. Default to the new
        # behaviour if the regexp was unable to match anything, since this
        # successfully parses the version number of existing supported
        # versions that require the converter (MSVC 2010 and 2012).
        cl_major_ver=$(cl 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
        if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
            cc_default="c99wrap cl"
        else
            cc_default="c99wrap cl"
        fi

执行./configure后会出现下面错误:

e:\shb\ffmpeg\ffmpeg-3.0.1_727\ffmpeg-3.0.1\libavutil\x86/intmath.h(58) : error
C4013: “_tzcnt_u32”未定义;假设外部返回 int
make: *** [libavdevice/alldevices.o] Error 1

修改configure.h文件:

#define HAVE_FAST_CLZ 1改为#define HAVE_FAST_CLZ 0

2,编译:make & make install ;

3,编译结果在vs2010_build 下。

 

你可能感兴趣的:(流媒体)