ffmpeg入门篇-linux编译安装ffmpeg
haoteby 2025-05-21 13:47 57 浏览
为什么说在 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
nasm即Netwide Assembler,是一款基于英特尔 x86 架构的汇编与反汇编工具。新版ffmpeg以及x264、x265依赖的汇编器。 需要注意的是,nasm是英特尔x86平台汇编器,不需要交叉编译,如果是arm等其他平台,交叉编译 ffmpeg 时需要添加选项 --disable-x86asm。
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以及x264、x265依赖的汇编器。yasm同nasm,也是x86平台汇编器,同样不需要交叉编译,如果是arm等其他平台,交叉编译 ffmpeg 时需要添加选项 --disable-yasm。
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
x264是开源的h264编码器,ffmpeg 本身自带了h264解码器,但是没有h264编码器,所以我们这里安装第三方编码器x264。
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 这里继续安装了。
相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】
音视频免费学习地址:
FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~
4)编译libx265
x265等同于x264,它是开源的h265编码器,ffmpeg 本身自带了h265解码器,但是没有h265编码器,所以我们这里安装第三方编码器x265。
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
libmp3lame是开源的mp3编码器。
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
如果你在编译的过程中遇到任何问题,建议先尝试google搜索,解决不了的可以下方留言我们共同解决。
原文 ffmpeg入门篇-linux编译安装ffmpeg - ffmpeg实战系列教程 - 白狼栈
相关推荐
- 法网公开赛再遭雨水突袭“三无赛事”困局一年后破解
-
大雨突降,比赛被迫取消。广州日报全媒体记者孙嘉晖摄今天,法网公开赛进入正赛第11个比赛日,突如其来的大雨让本该在当地时间14时开球的女单1/4决赛被迫延迟,最终组委会官方确认,当天比赛因恶劣天气全...
- AC米兰队史今天:2005年3比1尤文,马尔蒂尼PK伊布+众将围殴穆图
-
AC米兰队史今天:2005年3比1尤文,马尔蒂尼PK伊布+众将围攻穆图2005年10月29日,2005-2006赛季意甲第10轮的一场焦点对决在圣西罗上演,AC米兰坐镇主场迎战老妇人尤文图斯。强强死磕...
- 如果2005年西部全明星阵容VS2021年全明星阵容
-
#NBA全明星#如果2004-05赛季的西部全明星阵容,分别对阵今年的詹姆斯和杜兰特队,会孰强孰弱呢?首先我们来看看2004-05赛季西部全明星的阵容,首发球员是:科比、麦迪、加内特、邓肯、姚明;替补...
- EtherCAT从站EEPROM更新操作指南_ethercat stm32从站
-
@ZHangZMo升级EtherCAT从站EEPROM...
- LAN8820I-ABZJ/MICROCHIP/微芯/代理现货库存/以太网/太航半导体
-
描述微芯片lan820/lan820i是低功率100BASE/100BASE/1000BASE-TX/1000BASE-TX/100000base是由IEEE802.3和802.3ab...
- 汽车的发明者到底是谁?哪一年?百年历史的汽车品牌有哪些
-
今天是解读大学本科汽车专业教材《汽车构造》解读的第一期“总论”部分。后面将以教材内容为基础,并结合汽车发展现状做有一些更丰富的延展,同时补充进一些相关的常见故障及维修内容。华歌通俗易懂讲原理的讲解方...
- 嵌入式Linux自学不走弯路!670+讲课程!应用层+底层系统学习路线
-
在智能设备爆发式进化的今天,智能设备正从单点控制迈向系统级智能。从工业机械臂的精准控制到智能座舱的多屏交互,从边缘AI推理到云端协同,...
- 从cpu角度理解PCIe_cpuz pcie
-
举报Herok...
- 什么是big.LITTLE,你真的了解吗_big 是什么
-
2015年最佳智能手机阵容处理器均基于ARM的big.LITTLE架构,采用该架构处理器的手机工作速度更快更高效。三星GalaxyS6、HTCM9、LGG4等手机均采用基于big...
- 网上疯传的乌克兰战争片段,其实是一段游戏视频
-
希望人没事。...
- 《爱奇艺视频》UWP已悄悄更新ARM版,支持Win10 Mobile部署安装
-
此前IT之家报道过,爱奇艺视频(Beta版)已经推出Win10UWP版,适配Windows10PC系统,Win10Mobile还不能下载,不过现在有IT之家网友发现,爱奇艺视频(Beta版)商店里已...
- Arm版Chrome/Edge浏览器新改进:加速视频渲染、延长续航时间
-
IT之家6月29日消息,科技媒体WindowsReport昨日(6月28日)发布博文,挖掘ChromiumCommit发现了“EnableMediaFoundationA...
- ARM全新视频处理器Mali Egil曝光:支持VP9编解码
-
5月30日,ARM正式发布了其最新的图形处理器Mail-G71,基于ARM全新的GPU架构“Bifrost”,并且结合了线程级并行(TLP)设计。实际上,完整的MaliGPU基于ARM图形产品堆栈设...
- 2020年手机最全资源app网站合集,你要的基本上都有
-
手机最全资源app合集,你要的基本上都有聚BT:(最强资源聚合网站)https://jubt.net安卓老子追剧+安卓南瓜影视破解版+安卓香蕉影视+韩剧TV安卓:https://www.lanzous...
- 闰秒宣布取消,网友:让Linus本人与谷歌微软达成一致,只有它了
-
詹士发自凹非寺量子位|公众号QbitAI决定了!这一秒,程序员们不用再续了!...