ffmpeg安装之linux编译安装
转发自白狼栈:查看原文
关于ffmpeg的安装,有的人可能要折腾很久,甚至折腾一个礼拜,究其原因,基本都是编译安装惹的祸。
我们提供4种安装方式,最复杂的莫过于centos7上的编译安装。
大家可以根据自己的喜好选择安装。
为什么说在 linux 上编译安装 ffmpeg 最复杂?因为编译之前我们要安装很多扩展库,每个人的环境不同,要安装的编解码库或多或少都有些区别。
linux下安装 ffmpeg,我们以 centos7 编译安装为例。
先看下系统环境
[root@localhost vagrant]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
1、安装依赖
yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel
如果安装依赖的过程中,报如下错误
File "/bin/yum", line 30
except KeyboardInterrupt, e:
或者
updates | 2.9 kB 00:00:00
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
则优先看下默认的 python 是 2.x 的还是 3.x 的,如果是 3.x 的建议改成 2.x 的再试试。
2、安装一些必须的编解码库
1)编译 nasm,x264 依赖的汇编优化的库
cd /opt/ffmpeg
curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2
tar xjvf nasm-2.15.05.tar.bz2
cd nasm-2.15.05
./autogen.sh
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
ln -s /opt/ffmpeg/nasm /usr/bin/nasm
2)编译 yasm,yasm 可以理解是 ffmpeg 依赖的汇编优化的库
cd /opt/ffmpeg
curl -O -L https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
ln -s /opt/ffmpeg/yasm-1.3.0/yasm /usr/bin/yasm
3)编译 libx264
cd /opt/ffmpeg
git clone --branch stable --depth 1 https://code.videolan.org/videolan/x264.git
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
有些小伙伴在编译 x264 的时候,可能会报错 Found no assembler, Minimum version is nasm-2.13, If you really want to compile without asm, configure with --disable-asm,这个就说明你电脑上还存在其他的太老的 nasm,或者我们在第一步创建的 nasm 你没有添加到环境变量中导致的,一定要确保 nasm -v 是我们第一步新安装的包。设置好之后,x264 就可以从 ./configure 这里继续安装了。
4)编译libx265
cd /opt/ffmpeg
git clone --branch stable --depth 2 https://bitbucket.org/multicoreware/x265_git
cd cd x265_git/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install
5)编译libfdk_aac
cd /opt/ffmpeg
git clone --depth 1 https://github.com/mstorsjo/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
6)编译libmp3lame
cd /opt/ffmpeg
curl -O -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar xzvf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make
make install
7)编译libopus
cd /opt/ffmpeg
curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
tar xzvf opus-1.3.1.tar.gz
cd opus-1.3.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
8)编译libvpx
cd /opt/ffmpeg
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make
make install
如果 libvpx 的代码拉不下来,可以试试下面这种方式,其他步骤不变
wget https://github.com/webmproject/libvpx/archive/refs/tags/v1.10.0.tar.gz
tar zxvf v1.10.0.tar.gz
cd libvpx-1.10.0
编译是个漫长的过程,到此我们已经成功了一半,下面我们编译安装今天的主角 ffmpeg
3、编译安装ffmpeg
下载最新的稳定包并开始编译安装
cd /opt/ffmpeg
curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs=-lpthread \
--extra-libs=-lm \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libfdk_aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree
make
make install
hash -d ffmpeg
ln -s /opt/ffmpeg/ffmpeg/ffmpeg /usr/bin/ffmpeg
最后验证下是否安装成功
$ ffmpeg -version
ffmpeg version N-102343-g4d3474432f Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-44)
configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs=-lpthread --extra-libs=-lm --bindir=/root/bin --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil 57. 0.100 / 57. 0.100
libavcodec 59. 0.100 / 59. 0.100
libavformat 59. 0.100 / 59. 0.100
libavdevice 59. 0.100 / 59. 0.100
libavfilter 8. 0.101 / 8. 0.101
libswscale 6. 0.100 / 6. 0.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
ffmpeg安装之linux编译安装的更多相关文章
- [CentOS_7.4]Linux编译安装ffmpeg
[CentOS_7.4]Linux编译安装ffmpeg 安装过程: 下载安装源,配置,编译,安装,设置环境变量. # wget http://www.ffmpeg.org/releases/ffm ...
- 【转】linux 编译安装nginx,配置自启动脚本
linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...
- linux 编译安装nginx,配置自启动脚本
本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装nginx,记录下安装过程: 参照这篇文章:Linu ...
- linux编译安装LAMP
Linux安装Apache+MySQL+PHP 安装部分依赖 安装apr(可选) # tar -xf apr-1.5.0.tar.bz2 # cd apr-1.5.0 #./configure --p ...
- linux 编译安装PHP模块
本文移到:http://www.phpgay.com/Article/detail/classid/6/id/54.html linux 编译安装PHP模块 1.首先你要有你服务器上安装的PHP的版 ...
- 转:Linux 编译安装 Mysql5.7
http://broqiang.com/2017/04/18/Mysql-Install-5.7.18-Linux-Compile/ 原文 Linux 编译安装 Mysql5.7 Ubuntu 下快速 ...
- Linux编译安装Apache+PHP
Linux编译安装Apache+PHP 来自:自学it网,http://www.zixue.it/. 1]编译安装Apache+PHP 1.安装程序依赖库和开发环境 为了省事把所需要的库文件全都安 ...
- Linux编译安装Qt 5.4.1(-qt-xcb是必须要指定的,卸载自带的gcc等)
转载请注明文章:Linux编译安装Qt 5.4.1 出处:多客博图 很久不写文章了,过程很简单,但是操作很多,简单说吧. 前言: 操作系统CentOS 6.6,64位的. 1.安装gcc 4.8.4, ...
- Linux 编译安装、压缩打包、定时任务
目录 Linux 编译安装 知识储备: wget命令 编译安装 Linux 压缩打包 gzip压缩 bzip2压缩 tar打包 Linux 定时任务 相关文件及操作 Linux 编译安装 编译安装就是 ...
随机推荐
- matlab通用命令
常用命令 命令 命令说明 cd 显示或改变当前文件夹 dir 显示当前文件夹或指定目录下的文件 clc 清除工作窗中的所有显示内容 home 将光标移至命令行窗口的最左上角 clf 清除图形窗口 ty ...
- Day11_49_HashTable
HashTable * HashTable是较早期的使用Hash算法的一种容器结构,现在基本已被淘汰,单线程多使用HashMap,多线程使用ConcurrentHashMap. * HashTable ...
- JUC包的线程池详解
为什么要使用线程池 创建/销毁线程需要消耗系统资源,线程池可以复用已创建的线程. 控制并发的数量.并发数量过多,可能会导致资源消耗过多,从而造成服务器崩溃.(主要原因) 可以对线程做统一管理. JUC ...
- 一致性哈希做负载均衡,基于dubbo的简化版本,超级简单容易理解!!!
一致性哈希算法原理以及做分布式存储.一定先看:一致性哈希算法 dubbo提供了四种负载均衡实现:权重随机算法,最少活跃调用数算法,一致性哈希算法,加权轮询算法. 本文基于开源项目:guide-rpc- ...
- k8s kubernetes 集群 证书更新操作
转载自https://www.cnblogs.com/kuku0223/p/12978716.html 1. 各个证书过期时间 /etc/kubernetes/pki/apiserver.crt #1 ...
- 1.9.1- html5文档类型和字符集
html5新标签与特性 文档类型设定 字符设定:
- 技术面试问题汇总第001篇:猎豹移动反病毒工程师part1
我在2014年7月1日参加了猎豹移动(原金山网络)反病毒工程师的电话面试,但是很遗憾,由于我当时准备不足,加上自身水平不够,面试官向我提出的很多技术问题我都没能答出来(这里面既有基础类的问题,也有比较 ...
- 手动添加导入表修改EXE功能
目标: 改动PE导入表,手工给HelloWorld增加一个功能,就是启动的时候写入一条开机启动项,C:\cmd0000000000000000000000000000.exe 实现方法: 直接在注册相 ...
- NumPy之:使用genfromtxt导入数据
目录 简介 genfromtxt介绍 多维数组 autostrip comments 跳过行和选择列 简介 在做科学计算的时候,我们需要从外部加载数据,今天给大家介绍一下NumPy中非常有用的一个方法 ...
- layui在toolbar使用上传控件在reload后失效的问题解决
问题描述 使用layui中的upload组件来上传文件,将按钮放了表格中的toolbar(头部工具栏中),碰到的问题是:第一次可以实现上传文件,但是第二次再上传文件的时候,点击按钮无效. 解决办法 ...