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-04-27 11:23