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.pswp.cn/pingmian/85068.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图片识别改名】如何批量识别大量图片的文字并重命名图片,基于WPF和京东OCR识别接口的实现方案

应用场景 在企业文档管理、数字图书馆、电商商品管理等场景中,经常需要处理大量图片中的文字信息。例如: 电商平台需要将商品图片中的型号、规格等信息提取出来作为文件名图书馆需要将扫描的图书页面识别为文字并整理归档企业需要将纸质文档电子化并按…

简历模板2——数据挖掘工程师5年经验

姓名 / Your Name 数据挖掘工程师 | 5年经验 | 推荐/风控/图模型 📞 138-XXXX-XXXX | ✉️ your.emailexample.com | 🌐 github.com/yourname | 📍 北京 🎯 个人简介 / Summary 5年大厂数据挖掘经验,硕士学历。擅长推…

CSS3 渐变效果

1. 引言 CSS3 渐变能够在指定颜色之间创建平滑过渡效果。这种设计元素不仅能为网页增添丰富的视觉层次,更是现代网页设计的重要组成部分。CSS3 提供两种主要的渐变类型:线性渐变(Linear Gradient) - 沿直线方向进行颜色过渡;径向渐变(Radial…

A Survey on 3D Gaussian Splatting——3D高斯领域综述

原文链接:[2401.03890] A Survey on 3D Gaussian Splatting 动态更新的GitHub仓库(包含性能对比与最新文献追踪): https://github.com/guikunchen/3DGS-Benchmarks https://github.com/guikunchen/Awesome3DGS 摘要&#xff1…

计算机网络 期末实训 eNSP 校园网

eNSP 综合实训 小型校园网 计算机网络期末实训 01 搭建拓扑 1.设计任务 构建一个小型校园网络,涵盖以下设备与区域: 学生宿舍区:50台计算机办公楼区:30台计算机(细分为财务部门、人事部门及其他科室)图书馆:10台计算机教学楼:30台计算机服务器集群:2台服务器,分别用…

Smart Form Adobe form 强制更改内表:TNAPR

强制更改内表:TNAPR se16-> Smart Form总览 Smart form 变量格式说明: &symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位 &symbol (n)& 只显示前N位 &symbol (S)& 忽略正负号 &symbol (<)& 符号在…

页面配置文件pages.json和小程序配置

页面配置文件pages.json和小程序配置 pages.jsonpagesstyle-navigationBarBackgroundColorstyle-navigationBarTitleTextstyle-navigationStylestyle-enablePullDownRefresh注意事项不同平台区分配置新建页面 globalStyletabBar代码 manifest.json授权web配置代理 pages.json …

Linux网络配置工具ifconfig与ip命令的全面对比

在Linux网络管理中&#xff0c;ifconfig和 ip命令是最常用的两个工具。随着时间的推移&#xff0c;ip命令逐渐取代了 ifconfig&#xff0c;成为更强大和灵活的网络配置工具。本文将对这两个工具进行全面对比&#xff0c;帮助您理解它们的区别和各自的优势。 一、ifconfig命令 …

STM32 实现解析自定义协议

一、环形队列设计与实现&#xff08;核心缓冲机制&#xff09; 数据结构设计&#xff1a; #define BUFFER_SIZE 512 #define BUFFER_MASK (BUFFER_SIZE - 1) typedef struct {volatile uint8_t buffer[BUFFER_SIZE]; // 环形缓冲区&#xff08;大小可配置&#xff09;volati…

NGINX 四层上游模块`ngx_stream_upstream_module` 实战指南

一、模块定位与引入 模块名称&#xff1a;ngx_stream_upstream_module 首次引入&#xff1a;NGINX 1.9.0&#xff08;2015-08-04&#xff09; 编译选项&#xff1a;启用 --with-stream&#xff08;含此模块&#xff09; 作用&#xff1a; 定义后端服务器组&#xff08;upstr…

WinUI3入门2:DataGrid动态更新 添加删除和修改字段

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

基于Python学习《Head First设计模式》第十三章 现实世界中的模式

定义设计模式 设计模式要素 模式名称、分类意图&#xff1a;描述模式是什么动机&#xff1a;描述什么时候使用这个模式&#xff0c;具体场景适用性&#xff1a;描述什么地方使用这个模式&#xff0c;用在什么场合结构&#xff1a;类图参与者&#xff1a;类和对象的责任和角色…

线性代数(1)线性方程组的多种解法

求解线性方程组是线性代数的核心问题之一&#xff0c;根据方程组的类型&#xff08;如齐次/非齐次、方阵/非方阵、稀疏/稠密等&#xff09;&#xff0c;可以采用不同的解法。以下是常见的线性方程组解法分类及简要说明&#xff1a; 一、直接解法&#xff08;精确解&#xff09…

肝脏/肝脏肿瘤图像分割数据集(猫脸码客第261期)

探秘肝脏/肝脏肿瘤图像分割&#xff1a;医学影像技术的新突破 一、引言 肝脏/肝脏肿瘤图像分割在医学领域占据着愈发重要的地位&#xff0c;为肝脏疾病的精准诊断与有效治疗提供了关键技术支撑。随着医学成像技术的飞速进步&#xff0c;如磁共振成像&#xff08;MRI&#xff…

【LLM05---位置编码】

文章目录 位置编码引出Transformer中位置编码方法:Sinusoidal functions两个重要性质位置编码 最近在学习位置编码,想找一个讲的比较透彻的文章或视频,找了半天,满意的一个也没有,所以自己记录一下。 注意,本篇笔记只作为自己的学习记录用,更好的讲解的内容请看链接:位…

pikachu——ssrf

概念补充&#xff1a; 内网&#xff1a;局部范围内的私有网络&#xff0c;比如局域网就是一个小范围的内网&#xff0c;有私有IP&#xff0c;并且内网受防火墙的保护&#xff0c;外网无法直接访问 外网&#xff1a;全球范围的公共网络&#xff0c;公有ip ip地址&#xff1a;…

java 设计模式_行为型_13备忘录模式

13.备忘录模式 模式定义 备忘录模式&#xff08;Memento Pattern&#xff09;模式的定义&#xff1a;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;以便以后当需要时能将该对象恢复到原先保存的状态。该模式又…

创建postgres数据库失败

异常&#xff1a; postgres# CREATE DATABASE deepflow_agent2; ERROR: source database "template1" is being accessed by other users DETAIL: There are 2 other sessions using the database 如何断联这两个session 要解决 PostgreSQL 中因 template1 数据库…

卧安机器人闯上市:深耕AI具身技术,“大疆教父”李泽湘再落子

撰稿|行星 来源|贝多财经 又一家机器人企业&#xff0c;现身港股资本市场。贝多财经了解到&#xff0c;卧安机器人&#xff08;深圳&#xff09;股份有限公司&#xff08;下称“卧安机器人”&#xff09;于6月8日向港交所提交了上市申请&#xff0c;国泰君安国际、华泰国际为…

基于GNU Radio Companion搭建的AM信号实验

目录 实验目的和要求 1、AM收发系统仿真和实际接收 调制过程 2、Lab 2.1实验过程AM信号的产生 AM信号的表达式 调制深度的概念 3、Lab2.2 AM信号的解调 4、Lab2.3 实际用RTLSDR接收一个ISM(912MHz)频率的AM信号,信号的AM调制为音频为48KHz的音乐信号 实验目的和要求 …