• 用VS2013编译FFMPEG232


    http://blog.csdn.net/finewind/article/details/38854517

    如果只是拿来使用,网上有现成的SDK。但我是想深入研究FFMPEG代码,又不熟悉Linux开发环境,因此需要编译一个在windos平台下能用VS单步调试的FFMPEG,网上现有资料大部分都是基于很老的版本,不断摸索,终于成功了。

    之所以选择VS2013,是因为VS2013支持大部分C99的特性,不需要改动代码,也不需要使用C99转C89的工具。

    MinGW和yasm是绕不过去的,因为需要使用MinGW来生成config.h,而ffmpeg的汇编语法和VS的不一样,因此需要yasm。

    具体步骤:

    1. 下载FFMPEG源码,下载地址:http://ffmpeg.zeranoe.com/builds/

    2. 下载MinGW安装器,下载地址:http://www.mingw.org/;下载完成后安装,安装完成后点运行,标记上以下几项:

    然后在Installation菜单下点击Apply Changes(mingw32-gcc-g++不用选择);

    3. 下载yasm,下载地址: http://yasm.tortall.net/ ;下载后改名为yasm.exe,复制到C:/MinGW/msys/1.0/bin目录下;

    4. 配置C:/MinGW/msys/1.0/msys.bat,在此文件的最前面(@echo off之后)添加一行如下内容:

    call "D:Program Files(x86)Microsoft Visual Studio 12.0VCinvcvars32.bat" (依实际安装路径修改路径);

    5.重命名 C:/MinGW/msys/1.0/bin/link.exe 为link_renamed.exe (依实际安装选择路径),这一步是防止这个link.exe与vc的link.exe发生冲突,编译完成后可修改回来;

    6. 配置编译,双击msys.bat,转到FFMPEG源代码根目录下,可运行 ./configure --help查看编译配置选项,我使用的选项为:

    静态库:./configure --enable-static --prefix=./vs2013_build --enable-debug --toolchain=msvc 
    动态库:./configure --enable-shared --prefix=./vs2013_build --enable-debug --toolchain=msvc

    等待配置完成返回;

    7. 输入 make all 编译;

    8. 输入make install安装。

    完成,此时生成的头文件及库已经在ffmpeg源代码下的vs2013_build目录下,使用这个库,即可在VS下单步进入FFMPEG函数内部。

    参考资料:

    http://ffmpeg.org/platform.html#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows

    http://www.cnblogs.com/xylc/p/3683203.html

    在Windows下编译FFmpeg详细说明

    http://blog.csdn.net/lipengyao2010/article/details/52317243


    ■yasm

    编译x264时候需要

    http://www.tortall.net/projects/yasm/

    下载:http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz

    解压,编译安装:

    ./configure –prefix=/mingw
    make
    make install
    【基本库】
    ■zlib

    http://sourceforge.net/projects/mingw/files/

    下载如下压缩包:

    MinGW zlib:libz-1.2.3-1-mingw32-dev.tar.gz

    将其解压到C:MinGW

    删除C:MinGWliblibz.dll.a(否则会使用动态链接,需要libz.dll)
    ■bzip2

    http://sourceforge.net/projects/mingw/files/

    下载如下压缩包:

    MinGW bzip2:bzip2-1.0.5-2-mingw32-dev.tar.gz

    将其解压到C:MinGW

    删除C:MinGWliblibbz2.dll.a(否则会使用动态链接,需要libbz-2.dll)
    ■SDL

    http://www.libsdl.org/

    编译ffplay时候需要

    下载:http://www.libsdl.org/release/SDL-devel-1.2.13-mingw32.tar.gz

    解压,修改Makefile:CROSS_PATH := /mingw

    编译安装:make cross
    【FFmpeg基本编译】

    源码取得:svn://svn.mplayerhq.hu/ffmpeg/trunk

    配置编译:假设安装路径为/FFmpeg/Release

    ./configure –prefix=/FFmpeg/Release –enable-memalign-hack
    make
    make install
    【编解码库】

    假设第三方库安装路径为/olibs
    ■libgsm

    GSM support via libgsm

    GSM 06.10 lossy speech compression

    http://user.cs.tu-berlin.de/~jutta/toast.html

    下载gsm-1.0.12.tar.gz

    解压,修改Makefile中的CC = gcc -ansi -pedantic为CC = gcc

    编译安装:

    make

    编译到后来会出错,但库已经编译完成,用如下命令拷贝即可

    cp lib/libgsm.a /olibs/lib/
    cp inc/gsm.h /olibs/include/gsm/

    ffmpeg编译参数:–enable-libgsm
    ■libmp3lame

    MP3 encoding via libmp3lame

    http://sourceforge.net/projects/lame/files/

    下载lame-3.98.3.tar.gz

    解压,修改lame-3.98-3/libmp3lame/i386/Makefile.in中下面这行

    $(ECHO) “non_pic_object=’$*.o’” >>$@



    $(ECHO) “non_pic_object=’ .libs/$*.o’” >>$@

    编译安装:

    ./configure –prefix=/olibs –disable-shared –enable-static –disable-frontend
    make
    make install

    ffmpeg编译参数:–enable-libmp3lame
    ■opencore-amr

    AMR-NB de/encoding、AMR-WB decoding via libopencore-amrnb

    http://sourceforge.net/projects/opencore-amr/

    下载opencore-amr-0.1.1.tar.gz(0.1.2编译需要g++、libstdc++.dll.a)

    解压,注释掉以下Makefile中的几行

    ./opencore-amr/amrnb/Makefile
    install: libopencore-amrnb.a $(SHLIB)
    install -d $(DESTDIR)$(PREFIX)/lib
    install -m 644 libopencore-amrnb.a $(DESTDIR)$(PREFIX)/lib
    # install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
    ifneq ($(shell uname), Darwin)
    # ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
    # ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrnb.so
    endif

    ./opencore-amr/amrwb/Makefile
    install: libopencore-amrwb.a $(SHLIB)
    install -d $(DESTDIR)$(PREFIX)/lib
    install -m 644 libopencore-amrwb.a $(DESTDIR)$(PREFIX)/lib
    # install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
    ifneq ($(shell uname), Darwin)
    # ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
    # ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrwb.so
    endif

    编译安装:

    make CC=gcc
    make install PREFIX=/olibs

    ffmpeg编译参数:–enable-version3 –enable-libopencore-amrnb –enable-libopencore-amrwb
    ■libogg

    供libvorbis和libtheora用

    http://www.xiph.org/downloads/

    下载libogg-1.1.4.tar.gz

    解压,编译安装:

    ./configure –prefix=/olibs –disable-shared
    make
    make install
    ■libvorbis

    Vorbis encoding via libvorbis

    http://www.xiph.org/downloads/

    下载libvorbis-1.2.3.tar.gz

    解压,编译安装:

    ./configure –prefix=/olibs –disable-shared –with-ogg=/olibs
    make
    make install

    ffmpeg编译参数:–enable-libvorbis
    ■libtheora

    Theora encoding via libtheora

    http://www.xiph.org/downloads/

    下载libtheora-1.1.1.zip

    解压,编译安装:

    ./configure –prefix=/olibs –disable-shared –with-ogg=/olibs
    make
    make install

    ffmpeg编译参数:–enable-libtheora
    ■libx264

    H.264 encoding via x264

    http://www.videolan.org/developers/x264.html

    ftp://ftp.videolan.org/pub/videolan/x264/snapshots/

    下载最新的源码包

    解压,编译安装:

    ./configure –prefix=/olibs
    make
    make install

    ffmpeg编译参数:–enable-gpl –enable-libx264
    ■libxvid

    Xvid encoding via xvidcore

    http://www.xvid.org/

    下载xvidcore-1.2.2.tar.gz

    解压,修改:

    ./build/generic/configure: “libxvidcore. <- “xvidcore.

    编译安装:

    cd xvidcore/build/generic
    ./configure –prefix=/olibs –disable-shared
    make
    make install

    删除/olibs/lib/libxvidcore.dll

    ffmpeg编译参数:–enable-gpl –enable-libxvid
    ■libfaac、libfaad

    ffmpeg内置已经支持aac编码、解码,不需要libfaac、libfaad了,而且libfaac是nonfree的,nonfree是unredistributable即禁止发布
    【FFmpeg高级编译】

    假设安装路径为/FFmpeg/Release,假设第三方库所在路径为/olibs

    配置编译:

    ./configure
    –prefix=/FFmpeg/Release
    –disable-debug
    –disable-static
    –enable-shared
    –enable-gpl
    –enable-version3
    –enable-avfilter
    –enable-avfilter-lavf
    –enable-memalign-hack
    –enable-avisynth
    –enable-libgsm
    –enable-libmp3lame
    –enable-libopencore-amrnb
    –enable-libopencore-amrwb
    –enable-libtheora
    –enable-libvorbis
    –enable-libx264
    –enable-libxvid
    –extra-cflags=-I/olibs/include
    –extra-ldflags=-L/olibs/lib
    make
    make install

  • 相关阅读:
    flex-direction
    flex-grow
    Push API
    ServiceWorker.state
    Using Service Workers
    Promise.then
    Promise()
    Using promises
    node-rsa
    async.waterfall
  • 原文地址:https://www.cnblogs.com/jukan/p/7047675.html
Copyright © 2020-2023  润新知