Windows系统下开源编解码库H.264与FFmpeg-2.8.2的编译与配置

一. 前言

FFmpeg是一个基于Linux开发的开源项目,其源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不支持MSVC++编译,需要在Windows下配置一个类似Linux的编译环境进行编译。

编译生成动态链接库dll,这些库将和其他的动态链接库一样在使用上没什么差别。可以使用MSVC++来链接这些库到其他的程序,也就是说,Windows + Visual Studio平台下的软件开发。

如果没有时间了解以下编译的过程,可直接下载以下链接的压缩包:该压缩包包含了编译好的FFmpeg库和可执行文件,且支持H.264编解码:

http://download.csdn.net/detail/liyuefeilong/9289455

注意:根据自身需求编译并配置FFmpeg,如欲使编译出来的FFmpeg支持对mp3格式的编解码,则需要下载mp3lame;欲使编译出来的FFmpeg支持对Xvid格式的编解码,则需要下载Xvid…更多需求可参考文章:http://blog.chinaunix.net/uid-20718335-id-2980793.html

二. 准备工作

首先需要准备编译过程所需的软件工具和源代码:

1.MinGW+MSYS:一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,可以通过配置让FFmpeg编译时产生Windows下调用dll对应的lib。为了简化烦琐的配置过程,直接下载MinGW-MSYS Bundle软件,按照软件默认的安装向导安装程序并配置安装路径,很快便可以把软件安装好。

下载链接:http://sourceforge.net/projects/mingwbundle/

2.Yasm:编译FFmpeg里面的汇编代码所需要的汇编编译器。

下载链接:http://yasm.tortall.net/releases/Release1.3.0.html

3.SDL(Simple DirectMedia Layer):是一套开放源代码的跨平台多媒体开发库,如果需要用到ffplay,则在编译FFmpeg前必须编译并配置SDL,否则无法生成ffplay,但是在本机尝试配置SDL并完成FFmpeg的编译后,生成的ffmpeg.exe、ffplay.exe和 ffprobe.exe在运行时无法正常输出信息,网上的说法是。

下载链接:http://www.libsdl.org/download-2.0.php

4.X264:为了让编译出来的FFmpeg支持对x264格式的编解码,需要先下载x264包。

下载链接:http://www.videolan.org/developers/x264.html

5.FFmpeg:直接下载源代码即可,我使用的版本为ffmpeg-2.8.2。FFmpeg的发行版本很多,各种版本可以在以下链接找到。

下载链接:http://ffmpeg.org/download.html

以上所有软件工具可直接通过以下链接下载:其中各个工具使用的不一定是最新版本,若需要使用最新版本,请自行下载软件和源代码。

三. 编译过程

1.MinGW+MSYS安装

MinGW-MSYS Bundle软件的安装过程十分简单,只需按照默认的安装向导安装程序并配置安装路径即可,我选择的安装路径是:C:\MinGW和C:\msys\1.0。

安装完成后,需要配置msys.bat,用于启动类似于Linux环境的终端。(安装完成后,我的msys.bat的路径是:C:\Program Files (x86)\MinGW-MSYS),然后,以编辑模式打开文件,在首行(@echo off之后)添加以下命令,其中的路径取决于Visual Studio的安装路径:

  call “C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin/vcvars32.bat”

2.YASM

http://yasm.tortall.net/Download.html上下载yasm的exe文件(根据自己的操作系统选择是Win32.exe还Win64.exe),下载完后重命名为yasm.exe,放到MinGW安装目录的bin目录下。

若没有执行这一步,则在后面编译FFmpeg的过程中可能会提示找不到yasm命令。这是由于FFmpeg里面的汇编加速部分的代码需要用到它,如果禁用汇编加速,会影响编译出来的编解码库的运行效率。

3.x264编译

FFmpeg本身仅支持H.264视频的解码,因此如果需要用到编码,需要下载x264源码包进行编译,根据上述提到的链接下载文件last_x264.tar.bz2,并接压到:C:\FFmpeg\目录下,然后,运行C:\Program Files (x86)\MinGW-MSYS以启动MinGW32,使用以下指令将工作路径切换到x264目录:C:\FFmpeg\ x264-snapshot-20151119-2245

$ cd /c
$ cd FFmpeg
$ cd x264-snapshot-20151119-2245

进入该目录后,再依次执行以下命令:

$ ./configure --enable-shared --disable-asm
$ make
$ make install

运行无误的话,结果如下:

编译结果在:C:\MinGW\msys\1.0\local 目录下可找到。

4.拷贝H.264编译结果

为了后续的编译工作,需要从C:\msys\1.0\local 到 D:\MinGW,分别把bin中的内容拷贝到 bin中;同理include拷贝到 include中;lib拷贝到 lib中。当然,该拷贝过程你可以不做,只要在编译的时候把路径指到C:\msys\1.0\local里面。

5.编译FFmpeg

使用configure命令配置FFmpeg的编译参数,根据需要组件的不同,输入的指令也会不同,也可以使用指令禁用一些功能。我的配置参数如下:

./configure --enable-shared --enable-gpl –enable-libx264 –enable-static

不出问题的话,会生成config文件,如下图所示。

最后一步,输入make进行编译,这需要一段时间。编译完成后,输入make install进行部署。

编译步骤完成,生成的文件在路径:C:\msys\1.0\local目录下。生成的动态库在:C:\msys\1.0\local\bin目录下;链接库文件在: C:\msys\1.0\local\lib目录下。其中,后缀为.dll.a为动态库需要的链接文件,.a为纯静态库(不依赖于dll);修改扩展名为.lib就可以用了。需要的头文件在路径:C:\msys\1.0\local目录下。

在运行ffmpeg.exe或ffprobe.exe时,可能会出现无法启动程序的错误,因为计算机中丢失pthreadGC2.dll和libiconv-2.dll等信息,只需要在C:\MinGW\bin下找到对应的dll,拷贝到当前目录,或放到系统目录C:\WINDOWS\system32(64位系统为:C:\Windows\syswow64)中即可。以下是运行ffmpeg.exe时的截图:

四.参考链接

http://blog.sina.com.cn/s/blog_513f4e8401011yuq.html

http://www.cnblogs.com/lidabo/p/3967473.html

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

时间: 2024-10-12 06:58:03

Windows系统下开源编解码库H.264与FFmpeg-2.8.2的编译与配置的相关文章

Windows系统下三十款优秀开源软件

Windows系统下三十款优秀开源软件 1.Firefox 官方网站:http://www.getfirefox.com/ 可替换Internet Explorer 功能特点:如果你还没有使用Firefox来作为你的网页浏览工具,那么你现在就可以动手了.它能够阻止那些烦人的弹出窗口,并且它还有大量优秀的插件,能够让你的网络冲浪体验更加美好.我可以全天候地赞美Firefox,但有一件事是肯定的:在新的Windows计算机上我要做的第一件事就是运行Internet Explorer,以让我去下载Fi

Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统上WinRAR或者好压软件一样的存在. 7-Zip软件下载与安装 网上下载相关安装包并完成安装,找到安装目录,复制7z.dll文件到D盘. .bat文件的制作 通过7-Zip软件使用手册了解到,通过动态命令行调用7z.dll可以把文件压缩成.tar.gz格式的,实际上是先将文件压缩成.tar格式的文

libavcodec是一款LGPL自由软件编解码库,用于视频和音频数据的编解码工作

http://zh.wikipedia.org/zh-cn/Libavcodec http://baike.baidu.com/view/856526.htm libavcodec是一款LGPL自由软件编解码库,用于视频和音频数据的编解码工作.带有这个名字的库有FFmpeg项目和Libav项目,但是它们却彼此不兼容. libavcodec是个集成了许多开源多媒体应用和框架.常见的MPlayer.xine和VLC媒体播放器都使用它作为它们的主要内置解码引擎,用于许多音频视频格式在所有支持的平台上的

玩node-images模块---Node.js轻量级跨平台图像编解码库

Node.js轻量级跨平台图像编解码库 github:https://github.com/zhangyuanwei/node-images Features 功能特性 轻量级:无需安装任何图像处理库. 跨平台:Windows下发布了编译好的.node文件,下载就能用. 方便用:jQuery风格的API,简单可依赖. 我们可以通过这个插件做什么呢,常见的可以加水印,简单的放大缩小压缩处理等. 实例: //编码图片依赖模块https://github.com/zhangyuanwei/node-i

Windows系统下Android开发环境搭建

“工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.eclipse的安装 3.Android SDK 的安装 4.Android ADT插件的安装 ---------------------------------------------------------------------------------------------------------

Windows系统下Python与NumPy安装方法

Windows系统下Python与NumPy安装方法 Windows下Python的某些第三方包安装步骤实在是太麻烦了(这里主要以NumPy为例,目前只有遇到安装它的时候出现了很多问题),晚上花了好几个小时才把NumPy科学计算包安装好,在这里描述下安装过程,避免大家走没有必要的弯路. 1,安装Python 首先,运行下载的MSI安装包,选择安装组件时,确保勾上了所有的组件. 特别要注意选上pip和Add python.exe to Path,然后多次点击Next即可完成安装. Python解释

windows系统下安装MySQL

可以运行在本地windows版本的MySQL数据库程 序自从3.21版以后已经可以从MySQL AB公司获得,而且 MYSQL每日的下载百分比非常大.这部分描述在windows上安装MySQL的过程. 安装程序是针对windows版本的MySQL 5.0,结合了图形安装向导,自动的安装MySQL,创建 一个配置文件,启动服务器,和保护默认的用户帐户. 如果你是升级安装现有的MySQL 4.1.5版本.你必须完成下列步骤: 1. 获得和安装 2. 如果有必要安装配置文件 3. 选择一个想要使用的服

Windows系统下Ant自动编译打包并签名Android应用——实践篇

1.背景 项目进行到一定程度了,每次发布前,产品要求打包测试,都需要手动从eclipse中导出签名APK,很是麻烦.于是想起了之前探索过的Ant自动签名打包.查看自己之前写的博客Windows系统下Ant自动编译打包并签名Android应用--探索篇,边动手边复习.但是后面遇到了一大串的问题... 2.问题解决过程 1).libs库中的第三方包 如果项目只是引用了第三方jar包,只要将jar包放入项目libs目录下就可以了,ant编译的时候会自动把第三方jar包加入进去的,没有任何问题. 2).

Windows系统下nodejs安装及配置

关于nodejs中文站,眼下活跃度最好的知识站应该是http://www.cnodejs.org/ ,而http://cnodejs.org/则活跃度较低.Express.js是nodejs的一个MVC开发框架,而且支持jade等多种模板,是Node.js上最流行的Web开发框架.这几天刚接触PhoneGap,曾经也看了一些nodejs的基础但苦于时间有限一直没机会亲自搭建一个nodejs环境,今天周末,部署了PhoneGap到Android,顺便一同搭建了一下nodejs本地环境,自己的操作过