FFmpeg最初由法国程序员Fabrice Bellard于2000年发起,功能丰富,能够满足各种音视频处理、开发的需求。除了功能丰富,FFmpeg还包含大量的加速优化,在CPU上,充分利用SIMD汇编加速、多线程加速,并积极引入GPU等异构加速,以实现最高性能。经历了20多年的迭代和长期的检验,FFmpeg在代码健壮性、媒体数据处理兼容性上也首屈一指。

官网:https://ffmpeg.org/ffmpeg.html

GitHub:https://github.com/FFmpeg/FFmpeg

FFmpeg 是用于处理音频、视频、字幕和相关元数据等多媒体内容的库和工具的集合。

目前,FFmpeg的主要构成包括命令行工具和基础库两部分。

基础库

  • libavcodec:音频、视频、字幕编解码库,包含800多个编解码器;除此之外,还包含parser、bitstream filter等编解码相关联功能;
  • libavformat:实现流协议、容器格式和基本 I/O 访问。传输协议、封装、解封装的实现,包含500多个媒体封装格式,50多个传输协议;
  • libavutil:基础库,包含数据结构、字符串处理、数学计算、内存管理、日志系统等等;
  • libavfilter:音视频滤镜处理框架,实现了诸如裁剪、水印贴图、混音等功能;
  • libswscale:图像缩放、图像格式转换等;
  • libswresample:音频格式转换、重采样等;
  • libavdevice:音视频采集与渲染输出;
  • libpostproc:视频后处理。

工具

  • ffmpeg 是一个命令行工具箱,用于操作、转换和流式传输多媒体内容。
  • ffplay 是一个简约的多媒体播放器。
  • ffprobe 是一种检查多媒体内容的简单分析工具。
  • 其他小工具,例如 aviocat、ismindex和qt-faststart。

FFmpeg 6.0 的重大更新

FFmpeg 6.0版本开发过程中,有190多位开发者参与了开发,改动的文件数目约3500个,其中22万行左右的代码被改动。

本次更新优化重构和新功能包括:

  • ffmpeg命令行工具重构,多线程优化;

  • AV1解码硬件加速,包括Intel、Nvidia和AMD GPU加速,以及Android系统MediaCodec解码加速;

  • 通过NDK MediaCodec实现的Android解码加速;Android MediaCodec编码(包括JNI和NDK MediaCodec两套实现);

  • 新增codec格式:Bonk、APAC等;新增音视频滤镜:adrc,afdelaysr,showcwt等;

  • 新增bitstream filter:dts2pts;快速傅里叶变换FFT优化,包含x86和ARM的汇编加速;

  • 支持新的RISC-V CPU架构。

除了增加新功能外,6.0版本还删除了一些废弃已久的API和代码。FFmpeg的开发流程不会立即删除某些API,而是先标记为deprecation,注释给出新的替代API,为用户留出时间更新。建议开发者注意编译时的deprecation警告,及时更新至新的API。(doc/APIchanges记录了API的改动)

作者:Jeebiz  创建时间:2023-03-19 22:17
最后编辑:Jeebiz  更新时间:2023-04-27 11:23