在Ubuntu Server上编译FFmpeg
来源:互联网 发布:teamtalk ios源码分析 编辑:程序博客网 时间:2024/06/05 00:32
FFmpeg是最流行的开源视频转码工具包,在Ubuntu上可以直接通过apt-get安装,但是默认的编码器不提供x264这些non-free的编码器,所以需要自己编译。
FFmpeg官方给出了详细的编译步骤:
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
本文和官方指南相比,主要在于改进了以下几处:
- 编译的bin目录不放到某个用户目录下,而是放到
/opt/bin
下面; - 不使用git/hg下载snapshot的源码版本,而是直接下载稳定版。
以下测试在Ubuntu Server 14.04下通过。
首先,用apt-get update
和apt-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.0libx264-dev >= 0.118libmp3lame-dev >= 3.98.3libopus-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_sourcestar zxvf x265_1.9.tar.gzcd x265_1.9/build/linuxPATH="/opt/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/opt/ffmpeg_build" -DENABLE_SHARED:bool=off ../../sourcemakemake installmake distclean
编译fdk-aac
依次执行以下命令:
cd /opt/ffmpeg_sourcesmv v0.1.4.zip fdk-aac-v0.1.4.zipunzip fdk-aac-v0.1.4.zipcd fdk-aac-0.1.4autoreconf -fiv./configure --prefix="/opt/ffmpeg_build" --disable-sharedmakemake installmake distclean
编译vp8/vp9
依次执行以下命令:
cd /opt/ffmpeg_sourcestar xjvf libvpx-1.5.0.tar.bz2cd libvpx-1.5.0PATH="/opt/bin:$PATH" ./configure --prefix="/opt/ffmpeg_build" --disable-examples --disable-unit-testsPATH="/opt/bin:$PATH" makemake installmake clean
编译ffmpeg
最后一步就是编译FFmpeg了:
cd /opt/ffmpeg_sourcesunzip FFmpeg-release-3.0.zipcd FFmpeg-release-3.0PATH="/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-nonfreePATH="/opt/bin:$PATH" makemake installmake distcleanhash -r
编译时间很长很长,一切顺利的话,在/opt/bin
目录下会编译出ffmpeg
、ffprobe
和ffserver
三个程序。最后,创建几个软连接,便于任意用户在任意目录下直接调用ffmpeg:
ln -s /opt/bin/ffmpeg /usr/bin/ffmpegln -s /opt/bin/ffprobe /usr/bin/ffprobeln -s /opt/bin/ffserver /usr/bin/ffserver
ffmpeg
是转码程序,ffprobe
可以用来分析视频文件,ffserver
可以实现流媒体服务器。
- 在Ubuntu Server上编译FFmpeg
- ffmpeg 在ubuntu 编译
- FFMpeg 源码编译 在ubuntu
- 在Ubuntu下编译FFMPEG
- 在Ubuntu下编译FFmpeg
- 在Ubuntu下编译FFmpeg
- 在Ubuntu下编译FFmpeg
- 在Ubuntu下编译FFmpeg
- FFmpeg在iOS上编译
- 在iOS上编译FFmpeg
- ffmpeg在windows上编译
- 在linux上编译ffmpeg
- 在Ubuntu Server 14.04上编译Android 6.0源码
- 在Ubuntu中用Android NDK编译FFmpeg
- 在Ubuntu中用Android NDK编译FFmpeg
- 在Ubuntu中用Android NDK编译FFmpeg
- 在Ubuntu中用Android NDK编译FFmpeg
- 在Ubuntu中用Android NDK编译FFmpeg
- d3画中国地图
- HTML制表符大全
- AS(四)Android xml解析
- MFC 选择一个文件夹路径
- IOS状态栏隐藏设置
- 在Ubuntu Server上编译FFmpeg
- 【备忘】阿里开源分布式框架dubbo&mycat视频教程
- Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析
- 【VS开发】MFC多显示器适配显示设置
- OkHttp3源码分析[复用连接池]
- java 搭建基于springboot的ssm(spring + springmvc + mybatis)的maven项目
- Ubuntu Linux出现内存不足导致的死机时处理
- Java-导入Excel
- 从零开始学习音视频编程技术(十三) 录屏软件开发之屏幕录像