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查看动态库和可执行程序的属性信息。

      

  • 相关阅读:
    ASP.NET Web API是如何根据请求选择Action的?[上篇]
    Ruby的对象模型
    MongoDB学习3
    Linux目录树详细说明
    Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)
    [置顶] SQL注入安全分析
    3.9 聚集和联接
    Qt之QTemporaryFile(文件名唯一,且可以自动删除)
    调用Windows属性窗口(居然是通过注册表来调用的)
    QTextEdit中选中文本修改字体与颜色,全部文本修改字体与颜色(设置调色板的前景色、背景色、文字颜色以及基色)
  • 原文地址:https://www.cnblogs.com/dwdxdy/p/3626999.html
Copyright © 2011-2022 走看看