Ubuntu22.04安装ffmpeg(v7.0)

安装步骤

1. 创建目录

bash 复制代码
mkdir -p /ffmpeg && cd ffmpeg

2. 下载文件

bash 复制代码
wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz

3. 解压

bash 复制代码
tar -zxvf ffmpeg-7.0.tar.gz

4. 安装环境依赖

官网说明:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

bash 复制代码
sudo apt-get update -qq && sudo apt-get -y install \
  autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libgnutls28-dev \
  libmp3lame-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
  libxcb-xfixes0-dev meson ninja-build pkg-config texinfo wget yasm zlib1g-dev

Ubuntu 20.04需额外安装以下环境
sudo apt install libunistring-dev libaom-dev libdav1d-dev


5. 安装x264依赖(非必须)

安装编译依赖

bash 复制代码
apt-get -y install git-core cmake build-essential

下载源码并编译安装

bash 复制代码
git clone https://code.videolan.org/videolan/x264.git \
  && cd x264 && ./configure --enable-shared --disable-asm --enable-pic \
  && make -j4 && make install && x264 --version

6. 编译安装

推荐编译(二选一)

若未安装上文x264,则从参数中删除--enable-libx264即可

bash 复制代码
cd ffmpeg-7.0 && ./configure --enable-shared --enable-libx264 --enable-gpl --enable-version3 --enable-libxcb

完整编译(二选一)

参数较多,编译后安装体积较大,请根据下文含义按需删减后再编译

bash 复制代码
cd ffmpeg-7.0 && ./configure --enable-shared --enable-libxcb \
  --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig \
  --enable-gnutls --enable-iconv --enable-libass --enable-libbluray \
  --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb \
  --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr \
  --enable-libtheora --enable-libtwolame --enable-libvpx \
  --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 \
  --enable-libxml2 --enable-lzma --enable-zlib --enable-gmp \
  --enable-libvorbis --enable-libvo-amrwbenc --enable-libspeex \
  --enable-libxvid --enable-libaom --enable-avisynth --enable-libopenmpt \
  --enable-libfdk-aac --enable-nonfree

参数解释

编译特性与库支持:

  • --enable-shared: 生成共享库(.so 文件),使FFmpeg库能在多个应用程序间共享。
  • --enable-gpl: 启用使用GNU General Public License (GPL)兼容的组件,允许使用某些可能受GPL约束的编码器或解码器。
  • --enable-version3: 指定启用FFmpeg项目版本3的特性和API。

多媒体框架与图形支持:

  • --enable-sdl2: 启用Simple DirectMedia Layer (SDL)库支持,可能用于FFmpeg的某些工具或测试。
  • --enable-fontconfig: 支持字体配置系统,便于处理字幕和图形中的文字。
  • --enable-gnutls: 启用GnuTLS库支持,用于实现安全的网络传输(如HTTPS)。

编码与解码库:

  • --enable-libass: 支持ASS/SSA字幕格式。
  • --enable-libbluray: 支持Blu-ray Discs的处理。
  • --enable-libmp3lame: 支持LAME MP3编码。
  • --enable-libopencore-amrnb, --enable-libopencore-amrwb: 支持AMR-NB和AMR-WB音频编码/解码。
  • --enable-libopus: 支持Opus音频编码/解码。
  • --enable-libshine: 支持Shine MP3音频编码。
  • --enable-libsnappy: 支持Snappy视频压缩算法。
  • --enable-libsoxr: 支持高质量音频重采样。
  • --enable-libtheora: 支持Theora视频编码/解码。
  • --enable-libtwolame: 支持TwoLAME MP2音频编码。
  • --enable-libvpx: 支持VP8/VP9视频编码/解码。
  • --enable-libwavpack: 支持WavPack音频压缩。
  • --enable-libwebp: 支持WebP图像编码/解码。
  • --enable-libx264, --enable-libx265: 支持H.264和H.265视频编码。
  • --enable-libxvid: 支持Xvid MPEG-4 Part 2视频编码。
  • --enable-libaom: 支持AV1视频编码/解码。
  • --enable-libopenmpt: 支持OpenMPT模块音乐播放。
  • --enable-libfdk-aac: 支持FDK AAC音频编码。
  • --enable-nonfree: 允许使用非自由(专有)软件组件。

其他依赖与功能:

  • --enable-libvorbis: 支持Vorbis音频编码/解码。
  • --enable-libvo-amrwbenc: 支持AMR-WB音频编码。
  • --enable-libspeex: 支持Speex音频编码/解码。
  • --enable-libxml2: 支持XML解析,可能用于处理元数据或字幕。
  • --enable-lzma: 支持LZMA压缩算法。
  • --enable-zlib: 支持Zlib压缩算法。
  • --enable-gmp: 支持GNU Multiple Precision Arithmetic Library,可能用于加密或数学运算。

安装

bash 复制代码
make -j 4 && make install

测试

bash 复制代码
root@86780383202d:/ffmpeg/ffmpeg-7.0# ffmpeg -version
ffmpeg version 7.0 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration:
libavutil      59.  8.100 / 59.  8.100
libavcodec     61.  3.100 / 61.  3.100
libavformat    61.  1.100 / 61.  1.100
libavdevice    61.  1.100 / 61.  1.100
libavfilter    10.  1.100 / 10.  1.100
libswscale      8.  1.100 /  8.  1.100
libswresample   5.  1.100 /  5.  1.100
相关推荐
wdfk_prog21 小时前
[Linux]学习笔记系列 -- hashtable
linux·笔记·学习
oMcLin21 小时前
如何在 Ubuntu 22.10 上通过 Kubernetes 和 Helm 管理微服务应用,简化跨平台电商平台的自动化部署?
ubuntu·微服务·kubernetes
CheungChunChiu21 小时前
Linux 内核动态打印机制详解
android·linux·服务器·前端·ubuntu
oMcLin1 天前
如何在Ubuntu 20.04上配置并优化容器化的SaaS应用平台,实现弹性伸缩与跨区域分布?
ubuntu·sass
myjie05271 天前
使用ffmpeg访问FileProvider 提供出去的content uri 问题
ffmpeg
BlueBirdssh1 天前
linux 内核通过 dts 设备树 配置pcie 控制器 各种参数和中断等, 那freeRTOS 是通过直接设置PCIe寄存器吗
linux
小目标一个亿1 天前
Windows平台Nginx配置web账号密码验证
linux·前端·nginx
Aotman_1 天前
Element-UI Message Box弹窗 使用$confirm方法自定义模版内容,修改默认样式
linux·运维·前端
那些年的笔记1 天前
Linux屏幕旋转方法
linux·运维·服务器
XiaoHu02071 天前
Linux网络编程套接字
linux·服务器·网络·git