在Ubuntu Server上编译FFmpeg

FFmpeg是最流行的开源视频转码工具包,在Ubuntu上可以直接通过apt-get安装,但是默认的编码器不提供x264这些non-free的编码器,所以需要自己编译。

FFmpeg官方给出了详细的编译步骤:

https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

本文和官方指南相比,主要在于改进了以下几处:

  1. 编译的bin目录不放到某个用户目录下,而是放到/opt/bin下面;
  2. 不使用git/hg下载snapshot的源码版本,而是直接下载稳定版。

以下测试在Ubuntu Server 14.04下通过。

首先,用apt-get updateapt-get upgrade把系统升级到最新版,然后,安装以下软件包:

apt-get install autoconf automake build-essential libass-dev libfreetype6-dev libtheora-dev libtool libvorbis-dev pkg-config texinfo zlib1g-dev unzip cmake yasm libx264-dev libmp3lame-dev libopus-dev 

FFmpeg依赖的几个软件包有个最低版本要求:

yasm >= 1.2.0 libx264-dev >= 0.118 libmp3lame-dev >= 3.98.3 libopus-dev >= 1.1

这几个包在Ubuntu 14.04上都符合FFmpeg的要求,所以可以直接用apt-get安装。如果是其它版本的Linux,就需要自己检查版本。

注意,因为这个FFmpeg是作为服务器使用的,所以不含ffplay的依赖包。如果想要在桌面使用,还需要安装以下软件包:

libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev

接下来需要下载并编译的是x265,fdk-aac,vpx和ffmpeg本身。

先创建如下目录结构:

/opt
+- ffmpeg_sources/
+- ffmpeg_build/
+- bin/

然后,把源码包下载到/opt/ffmpeg_sources/目录下。

因为不采用snapshot版本,所以我们可以直接下载某个稳定版源码。下载地址如下:

x265: https://bitbucket.org/multicoreware/x265/downloads/x265_1.9.tar.gz

fdk-aac: https://github.com/mstorsjo/fdk-aac/archive/v0.1.4.zip

vpx: http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.5.0.tar.bz2

ffmpeg: http://ffmpeg.org/releases/ffmpeg-3.0.tar.bz2

编译x265

依次执行以下命令:

cd /opt/ffmpeg_sources
tar zxvf x265_1.9.tar.gz
cd x265_1.9/build/linux
PATH="/opt/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/opt/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install
make distclean

编译fdk-aac

依次执行以下命令:

cd /opt/ffmpeg_sources
mv v0.1.4.zip fdk-aac-v0.1.4.zip
unzip fdk-aac-v0.1.4.zip
cd fdk-aac-0.1.4
autoreconf -fiv
./configure --prefix="/opt/ffmpeg_build" --disable-shared
make
make install
make distclean

编译vp8/vp9

依次执行以下命令:

cd /opt/ffmpeg_sources
tar xjvf libvpx-1.5.0.tar.bz2
cd libvpx-1.5.0
PATH="/opt/bin:$PATH" ./configure --prefix="/opt/ffmpeg_build" --disable-examples --disable-unit-tests
PATH="/opt/bin:$PATH" make
make install
make clean

编译ffmpeg

最后一步就是编译FFmpeg了:

cd /opt/ffmpeg_sources
tar xjvf FFmpeg-release-3.0.zip
cd FFmpeg-release-3.0
PATH="/opt/bin:$PATH" PKG_CONFIG_PATH="/opt/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="/opt/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I/opt/ffmpeg_build/include" \
--extra-ldflags="-L/opt/ffmpeg_build/lib" \
--bindir="/opt/bin" \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree
PATH="/opt/bin:$PATH" make
make install
make distclean
hash -r

编译时间很长很长,一切顺利的话,在/opt/bin目录下会编译出ffmpegffprobeffserver三个程序。最后,创建几个软连接,便于任意用户在任意目录下直接调用ffmpeg:

ln -s /opt/bin/ffmpeg /usr/bin/ffmpeg
ln -s /opt/bin/ffprobe /usr/bin/ffprobe
ln -s /opt/bin/ffserver /usr/bin/ffserver

ffmpeg是转码程序,ffprobe可以用来分析视频文件,ffserver可以实现流媒体服务器。

FFMpeg在Ubuntu上的安装和使用的更多相关文章

  1. Ubuntu上如何安装Java,Eclipse,Pydev,Python(自带,不用装),BeautifulSoup

    如何安装Java,如果出于编程的需要安装Java,需要安装的是JDK,而不仅仅是JRE,下面说说如何在Ubuntu下如何安装JDK:只有两步,1.下载并解压,2.配置环境变量1.下载并解压:下载地址: ...

  2. 手把手教你在Ubuntu上分别安装Nginx、PHP和Mysql

    手把手教你在Ubuntu上分别安装Nginx.PHP和Mysql

  3. 【FFMPEG】Ubuntu上安装FFMPEG

    在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...

  4. ubuntu 上已经安装libxml2还提示需要reinstall的解决方法

    最近在ubuntu上配置环境,遇到一些奇怪的问题,已经安装了libxml2了,运行 apt-get install libxml2提示已经是最新版本了,可以在安装软件的时候还是提示没有libxml2, ...

  5. ubuntu上的安装.netcore2.1

    .net core 在ubuntu上安装比较容易,依次执行正面语句即可 sudo apt-get install curl curl https://packages.microsoft.com/ke ...

  6. Ubuntu 上如何安装Docker

    Docker 是一个开源项目,为开发者和系统管理员提供了一个开放的平台,在任何地方通过打包和运行应用程序作为一个轻量级的容器.Docker 在软件容器内自动部署应用程序.Docker 最开始由 Sol ...

  7. Linux Ubuntu上手动安装.NET Core SDK

    今天重装了一台Linux服务器的Ubuntu 14.04系统,需要重新安装.NET Core 1.0. 按照官网上的文档用apt-get命令进行安装: sudo sh -c 'echo "d ...

  8. nginx在centos & ubuntu上的安装

    安装Centos 添加当前账号加入sudoers,具备sudo功能 安装编辑器vim Yum install vim Su root Cd cp /etc/sudoers /etc/sudoers[d ...

  9. Ubuntu上Eclipse安装PyDev方法和配置

    Ubuntu11.10中Eclipse安装PyDev插件方法 PyDev是Eclipse中用来开发python的一个插件,个人比较喜欢,下面介绍在Ubuntu下安装这个插件的方法.(在Windows下 ...

随机推荐

  1. U8g2库I2C总线再次突破性调试成功

    这次采用U8X8的方式,不再采用u8g2,因为后者一直报内存问题.所以采用了不占内存的u8x8模式 同时u8g2库文件的示例代码也是很牛逼的, 里面还有message box 非常的可爱运行效果也非常 ...

  2. 两层嵌套list,选取list中最长的list的长度

    # coding=utf-8 import pandas as pd file_path = "test_aa.xlsx" dt = pd.read_excel(file_path ...

  3. Spring Boot:在Spring Boot中使用Mysql和JPA

    本文向你展示如何在Spring Boot的Web应用中使用Mysq数据库,也充分展示Spring Boot的优势(尽可能少的代码和配置).数据访问层我们将使用Spring Data JPA和Hiber ...

  4. java 获取ip地址和网络接口

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. 02_HTML5+CSS详解第一天

    视频来源:麦子学院 讲师:朱朝兵 HTML5概念:HTML即超文本标记语言(HyperText Makeup Language),是一种语法简单,结构清晰的解释型文档,不同于其他编程语言. HTML5 ...

  6. JavaScript数据结构 (手打代码)

    array: 数组创建: ); //创建一个长度为6的数组 ,,,,,); 数组方法: var str="I love javascript"; var single=str.sp ...

  7. MySQL数据库学习笔记----MySQL多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  8. matlab文件读写处理实例(二)——textread批量读取文件

    问题:对文件夹下所有文件进行批量读取,跳过文件头部分,读取每个文件数据部分的7,8,9列,保存到变量并且输出到文件. 数据: 文件夹11m\

  9. spring boot热部署

    1.pom配置 参考:http://412887952-qq-com.iteye.com/blog/2300313 2.intellij配置 参考:http://blog.csdn.net/wjc47 ...

  10. notepad++代码输出电话号

    在网上看到一个程序员找合租的消息,希望找一个程序员合租,所以电话号码以代码的形式输出,闲来没事打出来玩玩.首先新建一个test.java文件,并敲入下面代码: 1 public class test{ ...