• 2010_3_1最新 完整 FFMPEG 编译详解


    在网上看了很多编译详解,都很零散。经过自己的编译,解决一些BUG,在此分享自己的一些经验... 话不多说了!直接上贴。
    第一步:准备编译平台。
    需要 一个 MinGW 和 一个 MSYS 安装包 以及 MSYS_DTK.
       当前最新是版本:
       MinGW5.1.6.exe    [url=http://sourceforge.net/projects/mingw/files/]下载[/url]
       msysDTK-1.0.1.exe [url=http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe]下载[/url]
       Msys1.0.11.exe    [url=http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe]下载[/url]
    按照以上顺序安装 :
         建议:(可选)
         把 MinGw5.1.6 安装到 F:/MinGw (为了路径简短起见)
         把Msys1.0.11 安装到 F:/MinGw/Msys(为了方便起见)
    (有些机器不会在/MinGw/Msys/etc中产生正确的fstab文件,因此确保
    /MinGw/Msys/etc中具有一个fstab文件 内容为:F:/MinGw /minwg  前者为你的MinGw安装目录 后面对应MinGw目录)
    第二步:准备编译工具
      需要一些编译工具,以便能够编译需要的库。
    1.二进制工具(xx.exe文件)
      pr.exe (在coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2 包的bin目录中)[url=http://sourceforge.net/projects/mingw/files /MSYS Base System/_obsolete/coreutils-5.97-MSYS-1.0.11-2/coreutils- 5.97-MSYS-1.0.11-snapshot.tar.bz2/download]下载[/url]
      (ffmpeg中 configure执行需要用到)
      复制到 MinGW/bin中
    (注意:是MinGW目录中的bin)
      SDL 工具 [url=http://www.libsdl.org/docs.php]下载[/url] (ffmpeg 需要用到)
      在包中的四个目录:bin lib include share 一起复制到 MinGw 目录下
      (bin 中包含 有 SDL.dll 和 sdl-config)
      在sdl-config中修改 第一行为 prefix=/mingw
      ([url=http://www.ffmpeg.com.cn/index.php/Ffplay使用事例]参考[/url])
      unzip.exe 工具 [url=unzip-5.51-1.exe][url=http://sourceforge.net/projects/gnuwin32 /files/unzip/]下载[/url][/url] (安装 libamrnb libamrwb 需要用到)
      解压 unzip-xxx-bin.zip 后在bin 中复制 unzip.exe 到 MinGw/Msys/bin 中
    (注意:是 Msys目录中的bin)
      wget.exe 工具 [url=http://ftp.gnu.org/gnu/wget/]下载[/url] (安装 libamrnb libamrwb 需要用到)
      解压后 在 bin 中拷贝 wget.exe 到 MinGw/Msys/bin 中
    (注意:是 Msys目录中的bin)
      git.exe 工具 下载(获取x264库需要用到)
      安装:[url=http://msysgit.googlecode.com/files/Git-1.6.5.1-preview20091022.exe]Git-1.6.5.1-preview20091022.exe[/url]
    2.源码安装包(需要编译安装的工具包)
      autoconf [url=http://ftp.gnu.org/gnu/autoconf/]下载[/url]
      automake [url=http://ftp.gnu.org/gnu/automake/]下载[/url]
      libtool  [url=http://ftp.gnu.org/gnu/libtool/]下载[/url]
      yasm     [url=http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz]下载[/url]
      下载最新版 然后解压到 Msys目录中的home/Administrator 中
      (说明:以后需要执行 'configure' 'make' 'make install' 命令来安装的xx.tag.gz包 都解压到Administrator里 以便控制台中方面路劲的输入)
    包的安装:
    举例安装 autoconf 包
      在Msys命令行中:
        cd autoconf 回车 (从 ~ 目录 进入 autoconf 目录)
        configure 回车 (执行配置文件)
        make 回车       (开始编译)
        make install 回车 (安装)
    安装 automake包: 动作同上,只是要进入 automake 目录.(cd automake)
    第三步:准备一个线程库(不准备编译x264的可以跳过)
      pthread包  [url=ftp://sources.redhat.com/pub/pthreads-win32/pthreads- w32-2-8-0-release.tar.gz]下载[/url] ([url=http://ffmpeg.arrozcru.org/wiki/index.php?title=Pthreads]参考[/url])
      解压到 MinGw/Msys/home/Administrator的pthread中
      在Msys命令行中:
         cd pthread 回车
         make GC 回车
      然后在pthread中找到 pthreadGC.dll 拷贝到 MinGw/bin 和 MinGw/lib 中
      ...............找到 pthread.h 和 sched.h  拷贝到 MinGw/include 中
      (注意有个Bug 打开sched.h line:152 和 line:154 的两个函数的参数类型pid_t 改成 int 这个Bug是自己遇到的,修改并不会影响任何功能,但并没有官方验证)
    目前这里就配置好所有的编译环境了!
       以下是支持要编译的编解码库:
    //===== Mp3lame [url=http://sourceforge.net/projects/lame/files/lame/]下载[/url]
    解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 lame
    在Msys安装:
       cd lame 回车
       configure --enalbe-shared 回车
       make 回车
       make install 回车
    //===== faac 和 faad2 [url=http://www.audiocoding.com/downloads.html]下载[/url] (两个包)
    faac 安装:(faac-1.28 需要一个补丁 [url=http://bbs.chinavideo.org/attachment.php?aid=368&k=bdbac83ed608d3697e25e985527c3b9c&t=1267424723&fid=11&sid=ab1ep/jU/kNhVRIt9st/5vPwWJxoQCf7uJGIj3A397qIkfc]faac-1.28.diff[/url] )
    解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 faac
    把补丁放到 faac 目录中
    在Msys安装:
       cd faac 回车
       patch -p1 < faac-1.28.diff 回车
       bootstrap 回车
       configure --with-mp4v2 --enalbe-shared 回车
    (不需要MP4 则第一个参数用--without-mp4v2 代替)
       make 回车
       make install 回车
    faad 安装:(faad2-2.7 需要一个补丁 [url=http://bbs.chinavideo.org/attachment.php?aid=369&k=4624ab33cb734713942aafb25213926c&t=1267427156&fid=11&sid=3fa8T1Vt6ibnc+wFOLP4vp0CkKhIQj1NZ+Hpq3RhVaiUQPw]faad2-2.7.diff[/url] )
    解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 faad2
    把补丁放到 faad2 目录中
    在Msys安装:
       cd faad2 回车
       patch -p1 < faad2-2.7.diff 回车
    (也可以手动修改,注释掉 faad2/frontend/main.c 中
        line: 34 的 #define off_t __int64 )
       bootstrap 回车
       configure --with-mp4vip --enalbe-shared 回车
    (第一个参数可选)
       configure顺利完成之后
         在libfaad/Makefile中修改:
            将AM_CFLAGS = -iquote $(top_srcdir)/include
            改成:AM_CFLAGS = -I $(top_srcdir)/include
         (这个是一个Bug修正 以免出现:
           cc1.exe: error: unrecognized command line option "-iquote")
       make 回车
       make install 回车
    //===== amrnb 和 amrwb [url=http://www.penguin.cz/~utx/amr#download]下载[/url]
    amrnb安装:
    解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 amrnb
    在Msys安装:
       cd amrnb 回车
       configure --enalbe-shared 回车
       make 回车
       make install 回车
    amrwb安装:
    解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 amrwb
    在Msys安装:
       cd amrwb 回车
       configure --enalbe-shared 回车
       make 回车
       make install 回车
    //===== xvidcore [url=http://www.xvid.org/Downloads.43.0.html]下载[/url]
    解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 xvid
    在Msys安装:
       cd xvid/build/generic 回车
       configure --enalbe-shared 回车
       make 回车
       make install 回车
    //===== H.264
      下载x264库:
       在Windows 的控制台中输入 :
    C:/...>  cd F:/mingw/msys/home/Administrator 回车
    (切换路径到 Administrator目录)
    F:/mingw/msys/home/Administrator > git clone git://git.videolan.org/vlc.git
    这时x264包就会下载到mingw/msys/home/Administrator目录中
    在Msys安装:
       cd x264 回车
       configure --enalbe-shared 回车
       make 回车
       make install 回车
    (有个Bug,安装后 在mingw/msys/local/include/x264.h 中
    line:209 中 修改 int i_bframe_pyramid; 为int b_bframe_pyramid; 保存)
    //**************到这里 有一些常用的编解码库了  下面来编译FFMPEG
    FFMPEG [url=http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2]下载[/url]
    解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 ffmpeg
    (注意了,编译x264库 需要修改一下 ffmpeg的configure
      把 line 1996 :中的 x264_encoder_open加上一个x264版本号,可以从F:/MinGw
    /msys/local/bin中的libx264-xx.dll 得知,这里编译得到的是libx264-88.dll
    所以  把 line 1996 :中的 x264_encoder_open 改为 x264_encoder_open_88,以解决
    编译x264后,编译ffmpeg 提示 libx264 not found.)
    在ffmpeg目录中 新建一个文本文件 改名为 cml (无扩展名)
    编辑 cml :
    configure /
    [size=3]--enable-ffplay /
    --enable-static /
    --enable-memalign-hack /
    [/size][size=3]--enable-gpl / [/size]
    [size=3]--enable-libmp3lame /
    --enable-libfaac /
    --enable-libfaad /
    --enable-libx264 /
    [/size][size=3]--enable-nonfree /  [/size][size=3]
    --enable-libamr-nb /
    --enable-libamr-wb / [/size]
    [size=3]--extra-ldflags=-L/usr/local/lib /
    --extra-cflags=-I/usr/local/include [/size]
    保存.
    在Msys中输入:
    cml 回车
    make 回车
    make install 回车
    大功告成! 不过xvid不能在ffmpeg编译中使用--enable-shared参数
    不然会报错,你可以试试,如果可以,那就是我的机器问题! :-) 愉快

    admin 发表于 2010-3-1 03:47 PM

    非常完整,不错,谢谢分享!:victory:

    lovesai 发表于 2010-3-19 10:29 AM

    [b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b]
    请问这是在哪个平台上的编译?如果要应用到WIN32怎么编,编译后要能直接被VC调用的那种

    wzyzb 发表于 2010-3-24 03:36 PM

    给的链接好多东西都下不了

    wzyzb 发表于 2010-3-24 04:46 PM

    [b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b] wget 和SDL 都不知道怎么下载啊 老兄!!

    wzyzb 发表于 2010-3-24 07:21 PM

    [b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b] wget下载解压没有/bin目录

    wzyzb 发表于 2010-3-26 02:37 PM

    [b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b]
    autoconf 编译提示perl is not found

    mlinmxf 发表于 2010-3-26 07:23 PM

    楼主把你的系统环境先介绍一下啊。你是在win平台下编的?linux下要怎么编呢?

    gboystal 发表于 2010-3-27 09:16 AM

    搞了一下午,终于编完了。。

    jcooper 发表于 2010-4-12 04:38 PM

    很好,楼主辛苦了,谢谢总结,其实编译ff这个东西熟悉了就容易多了,难点在于如何用VC在win32平台下编译以获得最高性能

    xchinasl2008 发表于 2010-4-21 04:26 PM

    为什么我的X264下不下来啊

    czt151715 发表于 2010-4-21 09:57 PM

    可以下的
    地址是:git clone git://git.videolan.org/x264.git

    hunter104 发表于 2010-5-28 01:01 PM

    enalbe 应该是enable吧?

    xshzh 发表于 2010-7-16 09:32 AM

    在安装libtool的时候出现:
    checking for non-GNU ld... no
    configure: error: no acceptable ld found in $PATH
    请问是咋回事?执行configure的时候。
    谢谢

    admin 发表于 2010-7-16 10:45 AM

    没有找到“ld.exe”

    xshzh 发表于 2010-7-16 11:23 AM

    “ld.exe”哪里有下载,谢谢

    tocute 发表于 2010-7-29 06:36 PM

    請問在 win 7 中操作以上的動作
    卻一直出現
    Permission Denied   
    即使用了  chmod 777 結果也是一樣
    請問我該如何解決了   謝謝

    admin 发表于 2010-7-29 07:24 PM

    [quote]Permission Denied[/quote] 这肯定是权限问题了,建议你关闭UAC试试!

  • 相关阅读:
    git 存储stash 唏嘘
    Postman请求接口无响应解决案例(Could not send request) 唏嘘
    mybatis if判断字符串 唏嘘
    Mybatis if判断Integer类型的值 唏嘘
    mysql 按照中文首字母排序 唏嘘
    git add命令 唏嘘
    git stash drop stash@{0} error: unknown switch `e‘(window10) 唏嘘
    【原】3D游戏中的算法MMO游戏全视角3D相机,全地形中视觉障碍物自动缩进调整
    work diary
    高中物理错题本
  • 原文地址:https://www.cnblogs.com/djzny/p/3402270.html
Copyright © 2020-2023  润新知