当前位置: 首页 > news >正文

1.1 Linux 编译FFmpeg 4.4.1

一、安装编译工具

sudo apt install -y autoconf automake build-essential cmake git pkg-config nasm yasm libtool zlib1g-dev

说明:

  • autoconf:生成 configure 脚本,用于自动配置源码。
  • automake:与 autoconf 配合,生成 Makefile。
  • build-essential:包括 gcc、g++、make 等基本编译工具。
  • cmake:x265 等依赖库需要 CMake 来生成构建文件。
  • git:用于从 Git 仓库(如 x264、fdk-aac)克隆源码。
  • pkg-config:用于查找已安装库的头文件和库路径。
  • nasm yasm:汇编优化工具,x264 和 FFmpeg 使用它提高性能。
  • libtool:统一管理库文件的编译、链接和安装过程,屏蔽不同平台的底层差异
  • zlib1g-dev:用于处理压缩数据,如 PNG 解码或某些容器格式,FFmpeg 核心功能需要。

二、ffmpeg依赖库(apt安装)

2.1 有哪些ffmpeg依赖库

分类库名称用途FFmpeg 配置选项Ubuntu 安装命令
视频编码libx264-devH.264 视频编码(高效、广泛使用)--enable-libx264sudo apt install -y libx264-dev
libx265-devH.265/HEVC 视频编码(高压缩率,适用于 4K/8K)--enable-libx265sudo apt install -y libx265-dev
libvpx-devVP8/VP9 视频编码(用于 WebM 格式)--enable-libvpxsudo apt install -y libvpx-dev
libtheora-devTheora 视频编码(开源视频格式)--enable-libtheorasudo apt install -y libtheora-dev
libxvidcore-devXvid(MPEG-4)视频编码--enable-libxvidsudo apt install -y libxvidcore-dev
libaom-devAV1 视频编码(下一代开源视频格式)--enable-libaomsudo apt install -y libaom-dev
音频编码libfdk-aac-dev高质量 AAC 音频编码(非自由软件,需 --enable-nonfree--enable-libfdk-aacsudo apt install -y libfdk-aac-dev
libmp3lame-devMP3 音频编码--enable-libmp3lamesudo apt install -y libmp3lame-dev
libvorbis-devVorbis 音频编码(常用于 Ogg 容器)--enable-libvorbissudo apt install -y libvorbis-dev
libopus-devOpus 音频编码(低延迟、高质量,适合网络传输)--enable-libopussudo apt install -y libopus-dev
其他常用功能库libass-dev字幕渲染(支持 ASS/SSA 字幕格式)--enable-libasssudo apt install -y libass-dev
libfreetype6-dev字体渲染(用于字幕和文本叠加)--enable-libfreetypesudo apt install -y libfreetype6-dev
libsdl2-devSDL 库,用于 FFmpeg 的 ffplay 播放器--enable-sdl2sudo apt install -y libsdl2-dev
zlib1g-dev压缩支持(用于处理压缩元数据,如 PNG 或某些容器格式)--enable-zlibsudo apt install -y zlib1g-dev
libva-dev硬件加速解码/编码(VAAPI,Intel/AMD GPU)--enable-vaapisudo apt install -y libva-dev
libvdpau-dev硬件加速解码(VDPAU,NVIDIA GPU)--enable-vdpausudo apt install -y libvdpau-dev
libdav1d-devAV1 视频解码(高性能 AV1 解码器)--enable-libdav1dsudo apt install -y libdav1d-dev
libopenjpeg-devJPEG 2000 图像/视频编码--enable-libopenjpegsudo apt install -y libopenjpeg-dev

2.2 常见案例

最小化配置:x264、x265、fdk-aac 和 lame

安装依赖

sudo apt install -y libx264-dev libx265-dev libfdk-aac-dev libmp3lame-dev

ffmpeg 4.4.1 编译:

wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1./configure \--prefix="$(pwd)/../ffmpeg_build" \--enable-gpl \--enable-nonfree \--enable-libx264 \--enable-libx265 \--enable-libfdk-aac \--enable-libmp3lame \--enable-static \--disable-shared \--disable-docmake -j$(nproc) && make install

说明:

  • --enable-gpl--enable-nonfree 是 x264、x265 和 fdk-aac 必需的。
  • --extra-cflags--extra-ldflags 指定依赖库的头文件和库路径。
  • --disable-doc 跳过文档生成,节省时间。
  • make -j$(nproc) 使用所有 CPU 核心加速编译。

这是编译、安装的后的目录结构:

laow@laow-pc:~/Downloads$ tree ffmpeg_build/ -L 2
ffmpeg_build/
├── bin
│   ├── ffmpeg
│   └── ffprobe
├── include
│   ├── libavcodec
│   ├── libavdevice
│   ├── libavfilter
│   ├── libavformat
│   ├── libavutil
│   ├── libpostproc
│   ├── libswresample
│   └── libswscale
├── lib
│   ├── libavcodec.a
│   ├── libavdevice.a
│   ├── libavfilter.a
│   ├── libavformat.a
│   ├── libavutil.a
│   ├── libpostproc.a
│   ├── libswresample.a
│   ├── libswscale.a
│   └── pkgconfig
└── share└── ffmpeg

三、ffmpeg依赖库(手动编译安装)

所有源码下载:ffmpeg4.4.1源代码

3.1 编译依赖库

(1) 编译x264

x264 是一个 H.264 视频编码库,FFmpeg 使用其进行 H.264 编码。

git clone https://code.videolan.org/videolan/x264.git
cd x264./configure --prefix="$(pwd)/../3rdparty" --enable-staticmake -j$(nproc) && make install

(2) 编译x265

x265 用于 H.265/HEVC 编码,需安装 CMake。

wget https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz
tar xzvf x265_3.5.tar.gz && cd x265_3.5
mkdir tmp && cd tmpcmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../3rdparty \
../sourcemake -j$(nproc) && make install

(3) 编译fdk-aac

fdk-aac 是高质量 AAC 编码器,需 --enable-nonfree 编译 FFmpeg。

wget https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz
tar -xf fdk-aac-2.0.2.tar.gz && cd fdk-aac-2.0.2/# 生成 configure 脚本
autoreconf -fiv./configure --prefix="$(pwd)/../3rdparty" --disable-sharedmake -j$(nproc) && make install

(4) 编译mp3lame

LAME 用于 MP3 编码,简单易用。

wget https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz
tar -xf lame-3.100.tar.gz && cd lame-3.100./configure --prefix="$(pwd)/../3rdparty" --enable-static --disable-sharedmake -j$(nproc) && make install

3.2 编译ffmpeg

wget https://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
tar xf ffmpeg-4.4.1.tar.xz && cd ffmpeg-4.4.1export PKG_CONFIG_PATH=$(pwd)/../3rdparty/lib/pkgconfig./configure \--prefix="$(pwd)/../ffmpeg_build" \--extra-cflags="-I$(pwd)/../3rdparty/include" \--extra-ldflags="-L$(pwd)/../3rdparty/lib" \--enable-gpl \--enable-nonfree \--enable-libx264 \--enable-libx265 \--enable-libfdk-aac \--enable-libmp3lame \--enable-static \--disable-shared \--disable-docmake -j$(nproc) && make install

相关文章:

  • Git详解:初学者完全指南
  • Git 工作流与版本管理策略
  • 日本生活:日语语言学校-日语作文-沟通无国界(1)-题目:假装写日记
  • YOLOv8分类的三种C++实现:opencv dnn/libtorch/onnxruntime
  • java 设计模式_行为型_16访问者模式
  • 深入解析ArrayList源码:从短链项目实战到底层原理
  • 2025年EAAI SCI1区TOP,贪婪策略粒子群算法GS-IPSO+无人机桥梁巡检覆盖路径规划,深度解析+性能实测
  • 【项目实训#08】HarmonyOS知识图谱前端可视化实现
  • 计算机网络-自顶向下—第一章概述重点复习笔记
  • XMLDecoder、LDAP 注入与修复
  • WebSocket与XMPP:即时通讯技术的本质区别与选择逻辑优雅草卓伊凡|片翼|许贝贝
  • [每周一更]-(第147期):使用 Go 语言实现 JSON Web Token (JWT)
  • 深度学习——基于卷积神经网络的MNIST手写数字识别详解
  • 大规模异步新闻爬虫的分布式实现
  • 【Jmeter】Jmeter 高并发性能压力测试
  • orb_slam--安装配置
  • 混合云战略规划深度解析:多云管理的技术架构与治理框架
  • (题目向,随时更新)动态规划算法专题(2) --见识常见的尝试模型
  • 三维激光雷达在智慧工厂物流测量中的应用分析
  • Pytorch框架——自动微分和反向传播
  • 条件查询 php网站源码/杨谦教授编的营销课程
  • 做数据库与网站招什么人/重庆seo网络推广
  • 多少钱英语怎么说/百度seo优化方法
  • 158百事通做网站是诈骗吗/百度搜索引擎排行榜
  • 中国做乱的小说网站/营销方案100个软文
  • 寿光专业做网站的公司/如何做好一个品牌推广