zoukankan      html  css  js  c++  java
  • 【FFmpeg】Windows下64位ffmpeg编译

      本文主要记录在64位Windows 7下,编译64位ffmpeg的过程。

    1.资源准备

      (1). MSYS http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/

      (2). MinGW-w64 http://www.drangon.org/mingw/

      (3). SDL http://www.libsdl.org/download-1.2.php

      (4). x264 http://www.videolan.org/developers/x264.html

      (5). FFmpeg http://www.ffmpeg.org/download.html

      MinGW-w64中已经包含Yasm,因此不需要额外准备Yasm。

    2.软件安装

    (1). MinGW+Msys安装

      下载MSYS,解压到E:/ffmpeg64/msys目录。

      下载MinGW-w64,解到E:/ffmpeg64/msys/mingw64目录。

      启动msys.bat,打开类似于Linux的终端,并导入mingw64的环境变量。

    echo 'export PATH=.:/local/bin:/mingw64/bin:/bin' > .profile
    source .profile

    (2). SDL安装

      下载SDL1.2.14,解压到E:/ffmpeg64/SDL-1.2.14目录。

      进入SDL-1.2.14目录,依次执行: 

    ./configure --host=x86_64-w64-mingw32
    make 
    make install

      编译过程中,出现如下错误:

      

      查看SDL_dx5video.c源代码,如下图所示,可以看出启用预定义NONAMELESSUNION,则会引用u1、u2的结构,出现上述错误。

      解决方法是去除预定义NONAMELESSUNION,具体代码修改参考:http://hg.libsdl.org/SDL/rev/eada7e321df6

      

      另一种简便的解决方法是更换SDL库,换成SDL-1.2.15或SDL-2.0.3。由于ffplay.c主要是利用SDL-1.2的接口实现,若使用SDL-2.0.3,则需要修改ffplay.c的源代码,因此,本文利用SDL-1.2.15重新编译,生成SDL库,安装过程和安装SDL-1.2.14一样。

      完成编译过程,但在安装(make install)出现如下错误,提示“系统找不到指定的文件”,但是/bin/install和sdl-config都是存在。

      

       查询相关资料后,发现出错的原因可能是终端在解释路径出错,如:http://mingw-users.1079350.n2.nabble.com/Problem-with-ranlib-while-running-make-install-for-SDL-td3282130.html。当MinGW+Msys和Cygmin同时存在时,会出现路径冲突的问题,在Cygmin中,根目录"/"被解释为当前目录的根目录,即”E:/",Cygmin会将"/bin/install"解释为"E:/install",因而出现“系统找不到指定的文件”的错误。

      解决方法:修改Makefile文件,重新设置install的路径。

      

    (3). x264安装

      下载x264,解压到E:/ffmpeg64/x264目录下。

      进入x264目录,依次执行:

    ./configure --host=x86_64-w64-mingw32 --enable-shared
    make 
    make install

    (4). FFmpeg安装

      下载FFmpeg1.2,解压到E:/ffmpeg64/ffmpeg1.2

      进入ffmpeg目录,依次执行:

    ./configure --enable-gpl --enable-libx264 --enable-shared --enable-static --arch=x86_64 --extra-cflags='-I/local/include -I/local/cross-tools/i386-mingw32/include/SDL' --extra-ldflags='-L/local/lib -L/local/cross-tools/i386-mingw32/lib'
    make 
    make install

      --extra-cflags用于指定头文件路径,--extrac-ldflags用于指定库文件路径。

      注意:一定要指定SDL库和x264库的头文件和库文件路径。

    (5). 验证安装

      验证生成ffmpeg工具是否可执行,利用ffplay播放视频文件,查看是否可以正常播放。

      

      验证生成的动态库和可执行程序是否是64位,利用dumpbin查看动态库和可执行程序的属性信息。

      

  • 相关阅读:
    hdu 3790 最短路径问题
    hdu 2112 HDU Today
    最短路问题 以hdu1874为例
    hdu 1690 Bus System Floyd
    hdu 2066 一个人的旅行
    hdu 2680 Choose the best route
    hdu 1596 find the safest road
    hdu 1869 六度分离
    hdu 3339 In Action
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/dwdxdy/p/3626999.html
Copyright © 2011-2022 走看看