在Linux/Mac下编译 ffmpeg是非常方便的。但要在 Windows下编译 ffmpeg还真要花点时间。以下就是在 Windowns下编译ffmpeg的步骤:

一、安装Cygwin

在windows下安装 ffmpeg 的最好方式就是使用Cygwin。

Cygwin是什么呢?简单的说,就是在 Windows上装了一个Linux模拟器。然后你可以在这个模拟器上按照Linux的方式操作 Windows系统。因此,Windows安装了Cygwin之后,你就把它当Linux用就可以了。

既然在Windows上装Cygwin之后,可以像Linux一样操作,那当然编译ffmpeg也就相当的方便了。下面我们就开始安装它吧。

第一步:到 Cygwin官网下载 Cygwin 的可执行程序 setup-x86_64.exe

第二步:安装Cygwin。安装 Cygwin的操作非常简单,就是下一步,下一步。但需要注意一点,在安装的时候我们需要将必须的包安装上。主要有下面几个包:

1. gcc
2. g++
3. make
4. cmake
5. automake
6. gdb
7. nasm
8. yasm
9. wget

这几个包如何安装呢?要在选择安装包的界面里选"Full"选项,它表式在所有的可安装包里选择,然后在搜索框里填入上面的关键字就可以搜索到了。经过上面的步骤你应该已经成功将 Cygwin 安装到你的 Windows 系统上了。

二、安装 apt-cyg

虽然我们上面安装好了 Cygwin,但还是很不方便,为什么呢?主要是因为 Cygwin目前设计的还不是很人性化。

如果我们安装好Cygwin后,如果缺少了某个包想安装的话就特别麻烦。还需要重新安装 Cygwin才能解决,有没有更好的方式呢?

这里有一个很好用的开源工具,它叫 apt-cyg。它与 Ubuntu系统中的 apt一样特别好用,而且使用的方式与 apt也是一个样子的。

如何安装它呢?下面来讲述一下操作方法:

其实,apt-cyg就是一个脚本。我们只需要将这个脚本下载下来就OK了。这里是apt-cyg的下载地址。大家可以在Cygwin下执行下面的命令就好了。

第一步:

wget -c https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg

第二步:

install apt-cyg /bin

安装好了这个神器,我们就可以安装一些Linux下的常用命令了,是不是很爽?比如我们要装某个包就可以用 apt-cyg instal xxx这样来安装了。

三、安装pkg-config工具

在Windows系统下,一般不会默认安装该工具,所以在Windows下做实验的同学大都会遇到明明已经装了某个库,但仍然找不到该库的情况。其原因就是没有安装 pkg-config这个工具。

首先确认是否已经将 pkg-config工具安装好了。可以执行下面的命令:

pkg-config

如果提示没有安装,则先将该工具安装好,安装命令如下:

apt-cyg install pkg-config

四、编译安装 ffmpeg

虽然有了apt-cyg这个神器,但它目前只能安装Linux下的一些常用命令,像我们编译时需要的 x264, x265这些库它是无法找到的。不能找到的原因也很简单,是由于没有人把编译好的库放到apt-cyg 可以够到的源上。

没有办法,所以我们还必须要用最原始的方法,下代码自己进行编译。下面我们就一步一步的来吧

1、编译 yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3..tar.gz
cd yasm-1.3.
./configure
make && sudo make install

2、编译 fdk-aac

wget https://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.6.tar.gz
tar xvf fdk-aac-0.1..tar.gz
cd fdk-aac-0.1.
./configure
make && sudo make install

3、安装lame

wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -xzf lame-3.99..tar.gz
cd lame-3.99.
./configure
make && sudo make install

注:编译lame遇到的问题:

问题一:

在Cygwin下安装 lame的时候遇到执行 ./configure 失败的情况。如 "error: cannot guess build type; you must sepcify one",对这个问题可以通过下面的步骤来解决:

  1. 安装automake。可以通过 which automake来确认automake 是否已经安装。如果没有安装,可以通使用 apt-cyg install automake进行安装。
  2. 确认automake当前版本。可执行automake --version获取当前automake的版本号。
  3. 将 lame目录下的 config.guess文件替换为 /usr/share/automake-version下的config.guess 文件。
  4. 此时,再执行./configure进就可以下成功了。

问题二:

make时出现 "error: '_O_BINARY' undeclared (first use in this function)"的错误,解决办法如下:

  1. 打开出错文件 vi ./frontend/lametime.c
  2. 将下面这段代码注释掉
    /*
    #elif defined __CYGWIN
    setmod(fileno(fp), _O_BINARY);
    */
  3. 再执行make就可以成功了。

4、安装nasm

wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz
tar xvf nasm-2.13..tar.gz
cd nasm-2.13.
./configure
make && sudo make install

5、安装x264

wget http://mirror.yandex.ru/mirrors/ftp.videolan.org/x264/snapshots/last_x264.tar.bz2
bunzip2 last_x264.tar.bz2
tar -vxf last_x264.tar
cd last_x264
./configure --enable-static --enable-shared --disable-asm --disable-avs
make && sudo make install

6、安装ffmpeg

从ffmpeg官网下载代码编译, 编译方法如下:

wget -c https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
bunzip2 ffmpeg-4.0..tar.bz2
cd ffmpeg-4.0.
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-small --arch=x86_64 --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-filter=delogo --enable-debug --disable-optimizations --enable-shared
make && sudo make install

五、FFmpeg编译的问题

问题一:找不到 fdk-aac库

在编译ffmpeg时,有可能会报找不到fdk_aac库的错误。此时我们应该设置一下 PKG_CONFIG_PATH,指定ffmpeg到哪里找我们安装好的库。

上面通过源码安装的库,默认地址为/usr/local/lib下面,当然你可以通过./configure 中的–prefix参数改变这个目录。

如果使用默认路径的话,可以通过下面的命令来指定编译时去哪里找库

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

如果你改变了默认路径,则将后面的 /usr/local/lib/pkgconfig修改为你变更后的路径/xxx/.../lib/pkgconfig即可。

六、小结

通过上面的步骤我们就可以成功的从 Window上编译出我们可以执行的 ffmpeg了。

需要注意的是,ffmpeg是高度可订制的,你可以根据自己的需要编译出支持不同编解码的ffmpeg库,但方法都是一样的。

总的思路就是ffmpeg缺什么库,我们就下载相应库的源码给它编译好。然后增加ffmpeg相应的配置选项,再重新编译 ffmpeg。

有了上面的知识,我们也可以编译出支持 x265的ffmpeg。

参考资料:https://www.imooc.com/article/247113

Windows下编译安装 FFmpeg的更多相关文章

  1. N2N windows下编译安装文件

    n2n安装 n2n原理编译版下载,可直接使用:windows下vpn客户端 n2n_v2_linux_x64 n2n_v2_Win32TAP网卡驱动 #linux环境编译yum install -y ...

  2. Linux下编译安装FFmpeg

    FFmpeg官网:http://www.ffmpeg.org 官网介绍 FFmpeg is the leading multimedia framework, able to decode, enco ...

  3. centos6.5下编译安装FFmpeg

    以下安装步骤基本来自官网,做个笔记以方便自己以后查看 http://trac.ffmpeg.org/wiki/CompilationGuide 1.安装依赖包 <span style=" ...

  4. ffmpeg windows下编译安装

    安装msys2 更新源使下载速度更快 进入msys64/etc/pacman.d/目录中,分别在三个文件中增加mirrorlist.mingw32Server = http://mirrors.ust ...

  5. windows下编译安装BOOST

    boost的编译和使用,经过搜集资料和总结,记录成文.感谢文后所列参考资料的作者. 1 下载 地址:http://sourceforge.net/projects/boost/files/boost/ ...

  6. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  7. ffmpeg windows下编译ffmpeg

    windows下编译ffmpeg 今天由于工作需求需重新编译ffmpeg,百度,goole了一大堆,看眼花缭乱的,但几乎都是三种方案,大部分都是直接转发,一字不漏,错误的缺文件的还是照转,可是问题都大 ...

  8. windows 下编译64位ffmpeg

    window下如何编译ffmpeg 前文已有介绍,前面介绍的都是如何编译32位的库,本文主要介绍window 下如何编译64位ffmpeg库. 一.搭建编译环境 1.下载 windows下编译64位F ...

  9. 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

随机推荐

  1. android一个app打开另一个app的指定页面

    一个app打开另一个app的指定页面方法 有以下几种 1.通过包名.类名 2.通过intent的 action 3.通过Url 方案1. ComponentName componentName = n ...

  2. cocoapods 安装中出的太多问题

    前言: 新欢的公司,新买的电脑,新安装 cocoapods.然后开开心心去百度如何安装 cocoapods,前面的步骤我就不说了. 在 pod setup 上之后,网速超慢然后就失败 fatal: T ...

  3. windows -休眠

    查询服务器执行的睡眠状态 powercfg -a 开始休眠方法:手工键入如下命令: powercfg -hibernate on 命令执行之后立即就可以生效,无需要重新启动系统,再次执行“powerc ...

  4. 获得32位UUID字符串和指定数目的UUID

    在common包中创建类文件UUIDUtils.java package sinosoft.bjredcross.common; import java.util.UUID; public class ...

  5. AD 10使用技巧---新学习

    1.修改设计(D)-规则(R) (1)布线线宽(routing)8mil (2)线间距Clearance 8mil (3)过孔大小RoutingVias 2.布局摆放---按主控芯片的管脚要连接的电路 ...

  6. 将EditPad Lite 加入鼠标右键

    > 开始 > regedit 如图新建shell及command

  7. python json.dumps()函数输出json格式,使用indent参数对json数据格式化输出

    在python中,要输出json格式,需要对json数据进行编码,要用到函数:json.dumps json.dumps() :是对数据进行编码 #coding=gbkimport json dict ...

  8. 在IIS上发布并运行ASP.NET Core

    英文原文地址:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Application ...

  9. HTTPie命令介绍

    HTTPie 是一个 HTTP 的命令行客户端.其目标是让 CLI 和 web 服务之间的交互尽可能的人性化.HTTPie 可用于与 HTTP 服务器做测试.调试和常规交互. 1 定制 HTTP 方法 ...

  10. H5新特性-视频,音频-Flash-canvas绘图

    json格式 json - > AJAX json:数据格式,通常是以字符串形式表示 对象 {"name":"james","age" ...