linux下ffmpeg源码编译

文章目录

    • [1. 背景](#1. 背景)
    • [2. 准备工作](#2. 准备工作)
    • [3. 源码编译](#3. 源码编译)
      • [3.1 configure 配置](#3.1 configure 配置)
      • [3.2 编译](#3.2 编译)
      • [3.3 安装](#3.3 安装)
      • [3.4 验证](#3.4 验证)
      • [3.5 动态库路径](#3.5 动态库路径)

1. 背景

ffmpeg 是从事音视频领域绕不过去的一道坎,掌握了ffmpeg工具,在音视频开发的时候,无论是效率,还是看待问题的角度,都会产生一个不一样的情况。ffmpeg提供了源码,可以从源码角度,慢慢地去掌握这个工具。

2. 准备工作

  • 卸载之前安装的ffmpeg版本;
  • 如果知道安装位置,直接进行删除;
  • 如果是直接使用版本包工具安装的,直接使用命令删除;
    sudo apt remove -y ffmpeg libavutil-dev libavcodec-dev libavformat-dev
  • 源码下载
    • 登录ffmpeg官网https://ffmpeg.org/download.html,下载源码,或者在终端下
c 复制代码
wget https://ffmpeg.org/releases/ffmpeg-8.0.1.tar.xz
  • 源码解压
c 复制代码
tar -xvf ffmpeg-8.0.1.tar.xz

3. 源码编译

linux 下源码编译通常都是 configure、make、install。 ffmpeg的编译也是如此。

3.1 configure 配置

bash 复制代码
./configure --prefix=/usr/local --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-alsa --enable-static --enable-debug --enable-ffmpeg --enable-ffplay --enable-ffprobe --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzvbi --enable-filters --enable-demuxers --enable-muxers --enable-encoders --enable-decoders --enable-bsfs

-prefix 选项为后续安装的路径,这里指定为usr/local ,其他的是一些使能编译的功能。

  • 注意:configure 会检查系统依赖是否安装,如果没有安装或者版本过低,需要根据报错逐步去单个安装相关的工具。这一步会很繁琐且很麻烦。所以对于不需要的功能,可以直接--disable

3.2 编译

因为我们不是交叉编译,也就不需要在上面的一步配置交叉编译链,这里直接编译就行。

bash 复制代码
make -j16

3.3 安装

bash 复制代码
make install

3.4 验证

配置环境变量以及链接库路径:

bash 复制代码
# 修改 ~/.bashrc,在最后添加PATH以及LD_LIBRARY_PATH
export PATH=/usr/share/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
bash 复制代码
ffmpeg -v

ffmpeg version 8.0.1 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.3)
  configuration: --prefix=/usr/local --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-alsa --enable-static --enable-shared --enable-debug --enable-ffmpeg --enable-ffplay --enable-ffprobe --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzvbi --enable-filters --enable-demuxers --enable-muxers --enable-encoders --enable-decoders --enable-bsfs
  libavutil      60.  8.100 / 60.  8.100
  libavcodec     62. 11.100 / 62. 11.100
  libavformat    62.  3.100 / 62.  3.100
  libavdevice    62.  1.100 / 62.  1.100
  libavfilter    11.  4.100 / 11.  4.100
  libswscale      9.  1.100 /  9.  1.100
  libswresample   6.  1.100 /  6.  1.100

3.5 动态库路径

编译出来的 .so 在 /usr/local/lib 目录下,后续开发可以从此目录获取相关库。

  • 参考
  1. https://blog.csdn.net/u013416034/article/details/130649958
相关推荐
赛博云推-Twitter热门霸屏工具2 小时前
Twitter 自动化与热门霸屏实战:以赛博云推为例的技术解析
运维·自动化·twitter
菜鸟程序猿小章2 小时前
人大金仓服务器定时备份
运维·服务器
zt1985q2 小时前
本地部署静态网站生成工具 Vuepress 并实现外部访问
运维·服务器·网络·数据库·网络协议
拾光Ծ2 小时前
【Linux】文件系统核心(二):深入 Ext2 底层:Block Group 结构 + inode 索引,轻松锁定文件的增删改查
linux·软硬链接·inode·ext2文件系统·block group·文件系统原理·linux面试
楼田莉子2 小时前
Linux学习:进程信号
linux·运维·服务器·c++·学习
kabcko2 小时前
Windows10安装Docker
运维·docker·容器
KeeBoom2 小时前
嵌入式 Linux 应用开发完全手册——阅读笔记14
linux·笔记
看世界的小gui2 小时前
Jenkins通过CAS接入Maxkey单点登陆
运维·jenkins
软件资深者2 小时前
免费的2026网刻工具, 轻松解决局域网电脑批量还原问题
运维·服务器·负载均衡