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

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
http://www.xdnf.cn/news/14383.html

相关文章:

  • import引入api报select.default is not a function异常解析
  • FreeRTOS任务优先级和中断的优先级
  • XMLDecoder、LDAP 注入与修复
  • Android Studio Windows安装与配置指南
  • HTML+CSS 动态背景动态登录注册框
  • Vue3 + TypeScript + Element Plus 设置表格行背景颜色
  • G_DEFINE_TYPE的作用
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-个人博客(十)
  • platformIO开发ESP32程序时,出现崩溃重启时如何根据堆栈定位到源代码位置
  • 节日快乐啊
  • 【Docker基础】Docker核心概念:资源隔离详解
  • Docker run 子命令与运行优化相关的参数
  • 因为没有使用路由懒加载,产生了一个难以寻找的bug
  • std::shared_ptr引起内存泄漏的例子
  • Guava RateLimiter 使用详解:从基础使用到生产实践
  • js调试技巧
  • Meta推出AI视频重塑风格工具,现已在Meta AI和Instagram的Edits应用中上线
  • 【项目实训#10】HarmonyOS API文档RAG检索系统后端实现
  • DAY 31 文件的规范拆分和写法
  • 【Erdas实验教程】020:遥感图像空间增强( 图像锐化)
  • 是否需要预先安装 CUDA Toolkit?——按使用场景分级推荐及进阶说明
  • Git可视化革命:3分钟学会用Mermaid+AI画专业分支图
  • 快速入门:创建 Azure 数据资源管理器群集和数据库
  • 《单光子成像》第五章 预习2025.6.14
  • 使用Cursor + Devbox + Uniapp 一站式AI编程开发移动端(App、H5、小程序)
  • wifi架构
  • pikachu靶场通关笔记31 文件包含02之远程文件包含
  • java hashmap详解篇
  • LeetCode - 35. 搜索插入位置
  • 家政维修平台实战27:服务流程搭建