FFmpeg版本更新录(202x)


FFmpeg 是领先的开源多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西。它可支持最晦涩的古老格式,亦可最尖端的格式;无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的便携性。可以在 Linux、Mac OS X、Microsoft Windows、BSDs、Solaris 等各种构建环境、机器架构和配置下编译、运行,并通过测试基础设施 FATE。它包含了 libavcodec、libavutil、libavformat、libavfilter、libavdevice、libswscale 和 libswresample,可以被应用程序使用。还有 ffmpeg、ffplay 和 ffprobe,可以被终端用户用于转码和播放。
本文是从FFmpeg的产品主页分离出来的,专门用于该软件的更新记录,截止到2029年12月31日。
最新版本:3.0
代号 "Feynman" 发布,此版本是最新的稳定版本,包括大量的改进,比如 ffmpeg-mt,libav。此版本支持 NVENC (H.264 编码的 Nvidia 视频编码器接口);改进和新增了几个过滤器,libavfilter 添加了其他两个重要的过滤器:palettegen 和 paletteuse。此版本支持在 x86 32-bit 系统 和 pre-ssse3 CPUs 上运行 VP9 解码器;还有 API 方面的改进;同时还有大量的 bug 修复。
最新版本:4.0
FFmpeg 4.0.0 已正式发布,代号 “Wu” ,更新亮点包括:
MagicYUV 编解码器(实验性)
Bitstream 过滤器,用于在 H.264,HEVC 和 MPEG-2 流中编辑元数据
TiVo ty/ty demuxer
原生 aptX 和 aptX HD 编解码器
英特尔 QSV 加速 MJPEG 编码
英伟达 NVDEC 加速 H.264,HEVC,MJPEG,MPEG-1/2/4,VC1,VP8 / 9 hwaccel 解码
英特尔 QSV 加速 overlay filter
mcompand audio filter
acontrast audio filter
OpenCL overlay filter
video mix filter
video normalize filter
完整更新内容请查阅发行说明。
最新版本:4.2
FFmpeg 4.2 "Ada" 已经发布,鉴于 FFmpeg 上一次发布以来的时间,FFmpeg 4.2 更改是相当大的。更新内容主要如下:
FFmpeg 4.2 通过 DAV1D 库引入了 AV1 视频解码支持,添加了各种新的过滤器和演示器,添加了 GIF 解析器
现在支持使用 NVIDIA 公司的 NVDEC 和 CUDA 进行 HEVC 4:4:4 解码
VDPAU 支持 HEVC 4:4:4 解码,添加了 AV1 帧分割比特流过滤器,添加了 VP4 视频解码器,并支持 Clang 编译 CUDA 内核
最新版本:4.3
新版本 FFmpeg 4.3 随附支持处理 MP4 中的 TrueHD、Intel QSV 加速的 MJPEG 和 VP9 解码,并且在 Linux 上支持 Vulkan 驱动的 AMD AMF 编码器。AMD 的 AMF 是已经存在了几年并且可以支持 Vulkan 的高级媒体框架。令人感兴趣的是,不知 FFmpeg 对 AMD AMF 的支持是否会刺激Linux对其进行进一步的采用。更广泛地说,FFmpeg 4.3 具有 Vulkan 支持,并且各种过滤器都在增加 Vulkan 支持以加速。FFmpeg 4.3 还通过 rav1e、AV1 Annex B demuxer、AV1 frame merge bitstream filter 以及各种其他过滤器和解码器(如 OpenCL video stabilization filter)添加了 AV1 编码支持。且 FFmpeg 4.3 还具有 ZeroMQ 支持、VDPAU VP9 解码以及一些其他较小的改进。
最新版本:4.4
FFmpeg 4.4 已于2021年4月初正式发布,代号"Rao"。 此版本升级了许多工具库,并新增了大量过滤器和解码器,下面是部分更新亮点:
支持英特尔 QSV-加速 AV1 解码
新增 PGX 解码器
AV1 编码支持 SVT-AV1
支持仅使用硬加速的 AV1 解码器
支持 AudioToolbox 输出设备
支持微软 DXVA2/D3D11VA 硬件加速 AV1 解码
支持 VDPAU 加速的 HEVC 10 位和 12 位解码
支持 VDPAU 加速的 VP9 10 位和 12 位解码
支持 AV1 单色编码
支持 Cineform HD 编码器
支持 RPZA 视频编码器
支持 SpeedHQ 编码器
新增 Microsoft Paint 解调器和 MSPv2 解码器
支持 OpenEXR 图像编码器
拥有杜比 E 解析能力
通过 librist 处理 RIST 协议
……
完整内容点此查看此处。
最新版本:5.0
2022年1月中旬消息,自上次 FFmpeg 4.4 发布九个月后,FFmpeg 5.0 现已于2022年1月发布。该版本的一些亮点更新如下:
新的 Vulkan 驱动的视频水平/垂直翻转过滤器。
Apple Graphics SMC 编码器。
Speex 解码器。
各种新的 muxers/demuxers,例如 Argonaut Games CVG 和实验性的 IMF demuxer。
添加了一个 AV1 低开销比特流格式复用器。
Swscale slice 线程支持。
新的音频和视频过滤器。
LoongArch CPU 架构支持。
更多详情可查看 FFmpeg 发行日志。
最新版本:5.1
FFmpeg 5.1 "Riemann" 已于2022年7月下旬发布,功能更改包括:
NVIDIA 提供的 VDPAU AV1 硬件加速支持,可用于其最新的 RTX 30 系列显卡及更高版本。
AVIF 图像复用器支持基于 AV1 的图像格式。
JPEG-XL 图像支持。
移除旧的 X-Video 运动补偿 (XvMC) 硬件加速
IPFS/IPNS 协议支持。
PCM - 蓝光编码器支持。
Vizrt 二进制图像编码器/解码器。
像素化、色彩映射、乘法、反馈和其他新的视频过滤器。
声音侧添加了一个虚拟低音音频滤波器。
最新版本:6.0
在 5.1 发布约 6 个月后,FFmpeg 6.0 "Von Neumann" 现已于2023年3月上旬正式发布。该版本包含了许多新的编码器和解码器、过滤器以及 FFmpeg CLI 工具方面的改进。同时改变了发行方式,所有主要版本现在都会增加 ABI 版本;官方计划每年推出一个主要版本更新。另一个特定的更改是,废弃的 API 将在 3 个版本后,在下一个主要版本中被删除;一个主要版本的最后一个次要版本将是 LTS 版本。这意味着 FFmpeg 此后的发布将更加频繁、且更有条理性。
v6.0 中新的解码器包括有 Bonk、RKA、Radiance、SC-4、APAC、VQC、WavArc 和一些 ADPCM 格式,且 QSV 和 NVenc 现在支持 AV1 编码。FFmpeg CLI 也由于线程、统计选项、以及从文件为过滤器传递选项值的能力而得到了加速改进。新版本还添加了很多新的音频和视频过滤器,如 arc、showcwt、backgroundkey 和 ssim360,以及一些硬件过滤器。此外,该版本还包括:在编解码器中使用了新的 FFT 和 MDCT 实现、大量 bug 修复、更好的 ICC 配置文件处理和色彩空间信号改进、引入大量 RISC-V 矢量和标量汇编优化例程,以及一些新的改进的 API。而 Vulkan 改进和更多的 FFT 优化等一些已提交的功能,则预计将出现在下一个次要版本 6.1 中,官方表示将根据新的发布时间表尽快发布。一些更新内容如下:
Radiance HDR image 支持
ddagrab (Desktop Duplication) 视频捕获过滤器
ffmpeg -shortest_buf_duration 选项
ffmpeg 现在需要构建线程
ffmpeg 现在在单独的线程中运行每个 muxer
向 cropdetect 过滤器添加新模式以根据运动矢量和边缘检测 crop-area
适用于 10/12bit 422、10/12bit 444 HEVC 和 VP9 的 VAAPI 解码和编码
WBMP (Wireless Application Protocol Bitmap) image 格式
a3dscope 过滤器
bonk 解码器和解复用器
Micronas SC-4 音频解码器
LAF 解复用器
APAC 解码器和解复用器
Media 100i 解码器
DTS 到 PTS reorder bsf
ViewQuest VQC 解码器
backgroundkey 过滤器
nvenc AV1 编码支持
MediaCodec 编码器
对 QSV 的 oneVPL 支持
QSV AV1 编码器
10/12bit 422、10/12bit 444 HEVC 和 VP9 的 QSV 解码和编码
showcwt 多媒体过滤器
corr 视频过滤器
adrc 音频过滤器
afdelaysrc 音频过滤器
WADY DPCM 解码器和解复用器
CBD2 DPCM 解码器
ssim360 视频过滤器
ffmpeg CLI 新选项:-stats_enc_pre [_fmt]、-stats_enc_post [_fmt]、 -stats_mux_pre [_fmt]
hstack_vaapi、vstack_vaapi 和 xstack_vaapi 过滤器
XMD ADPCM 解码器和解复用器
media100 到 mjpegb bsf
ffmpeg CLI 新选项:-fix_sub_duration_heartbeat
WavArc 解码器和解复用器
弃用 CrystalHD 解码器
SDNS 解复用器
RKA 解码器和解复用器
ffmpeg CLI 中的 filtergraph 语法现在支持将 file contents 作为 option values 传递,方法是在 option 名称前加上 '/'
hstack_qsv、vstack_qsv 和 xstack_qsv 过滤器
2023年6月消息,除了 Apple 宣布在其 Safari 浏览器中支持 JPEG-XL 图像格式之外,FFmpeg 也宣布现已支持解码动画 JPEG-XL 文件。在2022年 FFmpeg 已经能够使用 libjxl 库解码静态 JPEG-XL 图像,随着在2023年6月上旬的 FFmpeg 6.1 发布之前合并的提交,现在它也能够处理动画/多帧 JPEG-XL 内容。该补丁仍然利用 libjxl 库增加了对 JPEG-XL 动画解码支持的支持,此外还添加了一个新的动画 JPEG-XL 多路分解器。2022年谷歌放弃在 Chrome 中支持 JPEG-XL 的行为受到了广泛批评。鉴于 Apple 本周在其 Safari 网络浏览器中添加 JPEG-XL 支持的举措,谷歌面临越来越大的压力,很多用户要求其恢复对 JPEG-XL 的支持。
最新版本:6.1
v6.1 已正式于2023年11月中旬发布,代号 "Heaviside"。作为重要版本更新,6.1 版本包含以下值得关注的新特性:
新增 Playdate 视频解码器和分离器
为 Windows 版本 libva-win32 扩展 VAAPI 支持
ffmpeg CLI 新增选项:-readrate_initial_burst
setpts 和 asetpts 过滤器支持命令
Vulkan 支持解码 hwaccel,支持 H264, HEVC and AV1
新增过滤器
afireqsrc audio source filter
arls filter
zoneplate video source filter
color_vulkan filter
bwdif_vulkan filter
nlmeans_vulkan filter
xfade_vulkan filter
bwdif_cuda filter
apsnr and asisdr audio filters
Bitstream filter for editing metadata in VVC streams
Bitstream filter for converting VVC from MP4 to Annex B
scale_vt filter for videotoolbox
transpose_vt filter for videotoolbox
新增解码器
libaribcaption decoder
RivaTuner video decoder
vMix video decoder
OSQ demuxer and decoder
新增编码器
Microsoft RLE video encoder
VAAPI AV1 encoder
新增解析器、muxer & demuxer
Essential Video Coding parser, muxer and demuxer
Essential Video Coding frame merge bsf
Raw AC-4 muxer and demuxer
Raw VVC bitstream parser, muxer and demuxer
CRI USM demuxer
其他改进
support for the P_SKIP hinting to speed up libx264 encoding
Support HEVC,VP9,AV1 codec in enhanced flv format
Support HEVC,VP9,AV1 codec fourcclist in enhanced rtmp protocol
ffmpeg CLI '-top' option deprecated in favor of the setfield filter
ffprobe XML output schema changed to account for multiple variable-fields elements within the same parent element
ffprobe -output_format option added as an alias of -of
发行公告写道,这个版本已经逾期至少半年了。由于版本库中的活动不断,不得不推迟发布。最近终于能够在合并 7.0 中的一些大改动之前,对该版本进行分支。在内部,开发团队也进行了一些修改。用于编解码器和滤波器的 FFT、MDCT、DCT 和 DST 实现已完全替换为速度更快的 libavutil/tx。这使得编译后二进制文件的体积大小减少,这在小规模构建中会很明显。 在整个视频解码器中,每帧的分配总量大幅减少,从而降低了开销。此外还对 DSP 代码的许多部分进行了 RISC-V 优化,主要是对大型解码器进行了合并。开发团队称他们努力提高每个数据包的时间戳和帧持续时间的正确性,从而提升变帧率视频的准确性。下一个更新将是 7.0 大版本,计划于2024年2月发布。
2023年11月10日,FFmpeg 6.1 正式发布。按照惯例,会选择一些物理学家名字作为代号,这一新版本代号为 “Heaviside”。主要为纪念伟大的英国数学家和物理学家奥利弗・黑维塞(Oliver Heaviside)。
奥利弗・黑维塞(Oliver Heaviside) 自学成才,没有系统经历过高等教育,但在物理、数学、工程领域成果非凡,其名言一直为人所津津乐道。“数学分 2 种,严格的和物理直观化的。前者的范围窄;后者粗犷而广泛。拘泥于公式的严格证明只会令绝大多数的数学物理探究止步不前。难道我要在完全理解消化反应的所有机理以前,拒绝进食吗?”
此次发布重要信息包含以下几点:
1. 支持增强版本的 RTMP/FLV,主要支持了 HEVC、VP9、AV1 等编解码格式。由于 Adobe 已经停止 RTMP 维护更新,这导致许多公司都在通过私有的方式支持新的视频编码格式。FFmpeg 这次官方支持,长期看有可能统一混乱的私有方案,但在短期内也会增加混乱与工作量,因为企业不得不同时维护私有和开放多套标准。
2. 对新一代编码标准 VVC 和 MPEG-5 EVC (Essential Video Coding) 的 parser, muxer ,demuxer 以及 bsf 的支持。FFmpeg 社区一直在积极开发原生的 VVC 的 decoder,目前看,容器格式和 bit stream 相关的支持已经初步完成,让我们等待它原生的 VVC 解码器被合并;另一方面,MPEG-5 EVC 相关的支持工作也在积极的进行,只是其编解码器以第三方库的方式支持(https://github.com/mpeg5)。
3.FFmpeg 重新实现了自己的 FFT,用于其内部编解码器和滤波器的 FFT、MDCT、DCT 和 DST 实现已经完全被更快的 libavutil/tx 所取代;这个改动一方面带来速度上面的收益,另外一方面,也使得库的大小大为减小。
4. 硬件加速继续迭代。一方面,FFmpeg 已经支持了基于 Vulkan 的解码(当然,如同大多数硬件加速一样,它要在一定的限制条件下才能使用)。另外也进一步支持了基于 VAAP 的 AV1 编码。说到 VAAPI,最让人吃惊的莫过于,FFmpeg 通过 libva-win32 项目,可以在 WIndows 上使用 FFmpeg VAAPI 的相关功能,这要感谢微软的工程师们在 WIndows 上的 WSL 项目上的努力。
其内部也有一些优化,包含了:
1.在视频解码器中大幅减少内存分配,从而降低内存等开销
2.对 DSP 代码的许多部分进行了 RISC-V 优化,针对常用解码器已经被合并
3.提高每个数据包的时间戳和帧持续时间的正确性,从而提升变帧率视频的支持
下一个主要版本将是 7.0 版本,按照计划,将在 2024 年 2 月发布。FFmpeg 最近这些年,虽然也经历了一些波折,但发展并未停滞,相反越来越迅速,而我们也即将迎来 FFmpeg 7.0 的大版本。
最新版本:7
7.0 “Dijkstra” 现已于2024年4月上旬发布。此版本以荷兰计算机科学家 Edsger W. Dijkstra 的名字命名,一些值得注意的变化包括原生 VVC 解码器(目前处于实验阶段)、IAMF 支持以及多线程 ffmpegCLI 工具。该版本并不向后兼容,删除了 v6.0 之前废弃的 API。对大多数 library callers 来说,最大的变化是删除了旧的 bitmask-based channel layout API,取而代之的是允许自定义通道排序或 Ambisonics 等功能的 AVChannelLayout API。某些过时的 ffmpegCLI 选项也已被移除,现在需要使用兼容 C11 的编译器来构建代码。此外还添加了许多新的支持格式和编解码器、新的过滤器、API 以及较小的功能和错误修复。FFmpeg 7.0 是一个相当大的版本,与 6.1 相比,该 git 存储库包含约 100 位作者的近 2000 个新 commit,涉及约 2000 个文件中的超过 100000 行。
DXV DXT1 编码器
LEAD MCMP 解码器
使用外部库 libxevd 的 EVC 解码
使用外部库 libxeve 的 EVC 编码
QOA 解码器和解复用器
aap 过滤器
解复用、解码、过滤、编码和复用 ffmpeg CLI 现在全部并行运行
启用 gdigrab 设备使用 hwnd=HANDLER 语法抓取窗口
IAMF 原始解复用器和复用器
D3D12VA 硬件加速 H264、HEVC、VP9、AV1、MPEG-2 和 VC1 解码
tiltandshift filter and quirc filter
qrencode filter 和 qrencodesrc source
lavu/eval:在表达式中引入 randomi() 函数
VVC 解码器(实验性)
AEA muxer、fsync 过滤器
ffmpeg CLI -bsf 选项现在可用于输入和输出
ffmpeg CLI 选项现在可以用作 -/opt <path>,相当于 -opt <contents of file <path>>
showinfo bitstream filter
现在需要使用符合 C11 的编译器;且在不久的将来升级到 C17
将 QSV 编码器的默认比特率控制方法从 VBR 更改为 CQP。
删除了已弃用的 ffmpeg CLI 选项 -psnr 和 -map_channel
DVD-Video demuxer,由 libdvdnav 和 libdvdread 提供支持
ffprobe -show_stream_groups 选项
ffmpeg CLI loopback decoders
支持增强 flv 格式的 PacketType 的 PacketTypeMetadata
具有 hwaccel 解码支持的 ffplay
dnn filter libtorch backend
Android content URIs protocol
AOMedia Film Grain Synthesis 1 (AFGS1)
针对 AAC、FLAC、JPEG-2000、LPC、RV4.0、SVQ、VC1、VP8 等的 RISC-V 优化
针对 HEVC 解码的 Loongarch 优化
针对 HEVC 的重要 AArch64 优化
MP4/ISOBMFF 内的 IAMF 支持
支持 HEIF/AVIF 静态图像和平铺静态图像
AV1 中的杜比视界配置文件 10 支持
支持 MP4/ISOBMFF 中的 Ambient Viewing Environment metadata
使用 libx264、libx265 和 libsvtav1 编码时的 HDR10 metadata passthrough
v7.1 “Péter” 现已于2024年10月上旬发布,这是一个新的主要版本。该版本的一大亮点内容是在 v7.0 版中作为实验版本合并的 VVC 解码器已经稳定。一些其它内容还包括:
添加对 native AAC USAC(xHE-AAC 编码系统的一部分)解码器的支持,由于其广泛的音量标准化元数据,该格式开始被流媒体网站采用。
支持 MV-HEVC 解码,通过外部库支持 LC-EVC 解码。
合并了对 Vulkan 编码的支持,包括 H264 和 HEVC。此外,Khronos 已宣布 Vulkan 即将支持 AV1 编码,FFmpeg 旨在紧跟其后。
除上述内容外,此版本还完成了很多重要的内部工作。目前为止最突出的是针对 full-range images 所做的改进。以前,color range 数据有两条路径,没有协商机制,而且无法可靠地转发到滤波器、编码器和多路复用器。清理系统的工作始于 10 多年前,但由于系统太脆弱而停滞不前。新系统解决了这个问题,因此现在 color range 可以在任何需要的地方正确且一致地转发,并且还为更高级的协商形式铺平了道路。
以及 Matroska 和 MP4 格式现在支持裁剪 metadata。此 metadata 不仅对存档很重要,而且对 AV1 也很重要,因为硬件编码器需要它的信号,编解码器本身不支持它。
本文是从FFmpeg的产品主页分离出来的,专门用于该软件的更新记录,截止到2029年12月31日。
最新版本:3.0
代号 "Feynman" 发布,此版本是最新的稳定版本,包括大量的改进,比如 ffmpeg-mt,libav。此版本支持 NVENC (H.264 编码的 Nvidia 视频编码器接口);改进和新增了几个过滤器,libavfilter 添加了其他两个重要的过滤器:palettegen 和 paletteuse。此版本支持在 x86 32-bit 系统 和 pre-ssse3 CPUs 上运行 VP9 解码器;还有 API 方面的改进;同时还有大量的 bug 修复。
最新版本:4.0
FFmpeg 4.0.0 已正式发布,代号 “Wu” ,更新亮点包括:
MagicYUV 编解码器(实验性)
Bitstream 过滤器,用于在 H.264,HEVC 和 MPEG-2 流中编辑元数据
TiVo ty/ty demuxer
原生 aptX 和 aptX HD 编解码器
英特尔 QSV 加速 MJPEG 编码
英伟达 NVDEC 加速 H.264,HEVC,MJPEG,MPEG-1/2/4,VC1,VP8 / 9 hwaccel 解码
英特尔 QSV 加速 overlay filter
mcompand audio filter
acontrast audio filter
OpenCL overlay filter
video mix filter
video normalize filter
完整更新内容请查阅发行说明。
最新版本:4.2
FFmpeg 4.2 "Ada" 已经发布,鉴于 FFmpeg 上一次发布以来的时间,FFmpeg 4.2 更改是相当大的。更新内容主要如下:
FFmpeg 4.2 通过 DAV1D 库引入了 AV1 视频解码支持,添加了各种新的过滤器和演示器,添加了 GIF 解析器
现在支持使用 NVIDIA 公司的 NVDEC 和 CUDA 进行 HEVC 4:4:4 解码
VDPAU 支持 HEVC 4:4:4 解码,添加了 AV1 帧分割比特流过滤器,添加了 VP4 视频解码器,并支持 Clang 编译 CUDA 内核
最新版本:4.3
新版本 FFmpeg 4.3 随附支持处理 MP4 中的 TrueHD、Intel QSV 加速的 MJPEG 和 VP9 解码,并且在 Linux 上支持 Vulkan 驱动的 AMD AMF 编码器。AMD 的 AMF 是已经存在了几年并且可以支持 Vulkan 的高级媒体框架。令人感兴趣的是,不知 FFmpeg 对 AMD AMF 的支持是否会刺激Linux对其进行进一步的采用。更广泛地说,FFmpeg 4.3 具有 Vulkan 支持,并且各种过滤器都在增加 Vulkan 支持以加速。FFmpeg 4.3 还通过 rav1e、AV1 Annex B demuxer、AV1 frame merge bitstream filter 以及各种其他过滤器和解码器(如 OpenCL video stabilization filter)添加了 AV1 编码支持。且 FFmpeg 4.3 还具有 ZeroMQ 支持、VDPAU VP9 解码以及一些其他较小的改进。
最新版本:4.4
FFmpeg 4.4 已于2021年4月初正式发布,代号"Rao"。 此版本升级了许多工具库,并新增了大量过滤器和解码器,下面是部分更新亮点:
支持英特尔 QSV-加速 AV1 解码
新增 PGX 解码器
AV1 编码支持 SVT-AV1
支持仅使用硬加速的 AV1 解码器
支持 AudioToolbox 输出设备
支持微软 DXVA2/D3D11VA 硬件加速 AV1 解码
支持 VDPAU 加速的 HEVC 10 位和 12 位解码
支持 VDPAU 加速的 VP9 10 位和 12 位解码
支持 AV1 单色编码
支持 Cineform HD 编码器
支持 RPZA 视频编码器
支持 SpeedHQ 编码器
新增 Microsoft Paint 解调器和 MSPv2 解码器
支持 OpenEXR 图像编码器
拥有杜比 E 解析能力
通过 librist 处理 RIST 协议
……
完整内容点此查看此处。
最新版本:5.0
2022年1月中旬消息,自上次 FFmpeg 4.4 发布九个月后,FFmpeg 5.0 现已于2022年1月发布。该版本的一些亮点更新如下:
新的 Vulkan 驱动的视频水平/垂直翻转过滤器。
Apple Graphics SMC 编码器。
Speex 解码器。
各种新的 muxers/demuxers,例如 Argonaut Games CVG 和实验性的 IMF demuxer。
添加了一个 AV1 低开销比特流格式复用器。
Swscale slice 线程支持。
新的音频和视频过滤器。
LoongArch CPU 架构支持。
更多详情可查看 FFmpeg 发行日志。
最新版本:5.1
FFmpeg 5.1 "Riemann" 已于2022年7月下旬发布,功能更改包括:
NVIDIA 提供的 VDPAU AV1 硬件加速支持,可用于其最新的 RTX 30 系列显卡及更高版本。
AVIF 图像复用器支持基于 AV1 的图像格式。
JPEG-XL 图像支持。
移除旧的 X-Video 运动补偿 (XvMC) 硬件加速
IPFS/IPNS 协议支持。
PCM - 蓝光编码器支持。
Vizrt 二进制图像编码器/解码器。
像素化、色彩映射、乘法、反馈和其他新的视频过滤器。
声音侧添加了一个虚拟低音音频滤波器。
最新版本:6.0
在 5.1 发布约 6 个月后,FFmpeg 6.0 "Von Neumann" 现已于2023年3月上旬正式发布。该版本包含了许多新的编码器和解码器、过滤器以及 FFmpeg CLI 工具方面的改进。同时改变了发行方式,所有主要版本现在都会增加 ABI 版本;官方计划每年推出一个主要版本更新。另一个特定的更改是,废弃的 API 将在 3 个版本后,在下一个主要版本中被删除;一个主要版本的最后一个次要版本将是 LTS 版本。这意味着 FFmpeg 此后的发布将更加频繁、且更有条理性。
v6.0 中新的解码器包括有 Bonk、RKA、Radiance、SC-4、APAC、VQC、WavArc 和一些 ADPCM 格式,且 QSV 和 NVenc 现在支持 AV1 编码。FFmpeg CLI 也由于线程、统计选项、以及从文件为过滤器传递选项值的能力而得到了加速改进。新版本还添加了很多新的音频和视频过滤器,如 arc、showcwt、backgroundkey 和 ssim360,以及一些硬件过滤器。此外,该版本还包括:在编解码器中使用了新的 FFT 和 MDCT 实现、大量 bug 修复、更好的 ICC 配置文件处理和色彩空间信号改进、引入大量 RISC-V 矢量和标量汇编优化例程,以及一些新的改进的 API。而 Vulkan 改进和更多的 FFT 优化等一些已提交的功能,则预计将出现在下一个次要版本 6.1 中,官方表示将根据新的发布时间表尽快发布。一些更新内容如下:
Radiance HDR image 支持
ddagrab (Desktop Duplication) 视频捕获过滤器
ffmpeg -shortest_buf_duration 选项
ffmpeg 现在需要构建线程
ffmpeg 现在在单独的线程中运行每个 muxer
向 cropdetect 过滤器添加新模式以根据运动矢量和边缘检测 crop-area
适用于 10/12bit 422、10/12bit 444 HEVC 和 VP9 的 VAAPI 解码和编码
WBMP (Wireless Application Protocol Bitmap) image 格式
a3dscope 过滤器
bonk 解码器和解复用器
Micronas SC-4 音频解码器
LAF 解复用器
APAC 解码器和解复用器
Media 100i 解码器
DTS 到 PTS reorder bsf
ViewQuest VQC 解码器
backgroundkey 过滤器
nvenc AV1 编码支持
MediaCodec 编码器
对 QSV 的 oneVPL 支持
QSV AV1 编码器
10/12bit 422、10/12bit 444 HEVC 和 VP9 的 QSV 解码和编码
showcwt 多媒体过滤器
corr 视频过滤器
adrc 音频过滤器
afdelaysrc 音频过滤器
WADY DPCM 解码器和解复用器
CBD2 DPCM 解码器
ssim360 视频过滤器
ffmpeg CLI 新选项:-stats_enc_pre [_fmt]、-stats_enc_post [_fmt]、 -stats_mux_pre [_fmt]
hstack_vaapi、vstack_vaapi 和 xstack_vaapi 过滤器
XMD ADPCM 解码器和解复用器
media100 到 mjpegb bsf
ffmpeg CLI 新选项:-fix_sub_duration_heartbeat
WavArc 解码器和解复用器
弃用 CrystalHD 解码器
SDNS 解复用器
RKA 解码器和解复用器
ffmpeg CLI 中的 filtergraph 语法现在支持将 file contents 作为 option values 传递,方法是在 option 名称前加上 '/'
hstack_qsv、vstack_qsv 和 xstack_qsv 过滤器
2023年6月消息,除了 Apple 宣布在其 Safari 浏览器中支持 JPEG-XL 图像格式之外,FFmpeg 也宣布现已支持解码动画 JPEG-XL 文件。在2022年 FFmpeg 已经能够使用 libjxl 库解码静态 JPEG-XL 图像,随着在2023年6月上旬的 FFmpeg 6.1 发布之前合并的提交,现在它也能够处理动画/多帧 JPEG-XL 内容。该补丁仍然利用 libjxl 库增加了对 JPEG-XL 动画解码支持的支持,此外还添加了一个新的动画 JPEG-XL 多路分解器。2022年谷歌放弃在 Chrome 中支持 JPEG-XL 的行为受到了广泛批评。鉴于 Apple 本周在其 Safari 网络浏览器中添加 JPEG-XL 支持的举措,谷歌面临越来越大的压力,很多用户要求其恢复对 JPEG-XL 的支持。
最新版本:6.1
v6.1 已正式于2023年11月中旬发布,代号 "Heaviside"。作为重要版本更新,6.1 版本包含以下值得关注的新特性:
新增 Playdate 视频解码器和分离器
为 Windows 版本 libva-win32 扩展 VAAPI 支持
ffmpeg CLI 新增选项:-readrate_initial_burst
setpts 和 asetpts 过滤器支持命令
Vulkan 支持解码 hwaccel,支持 H264, HEVC and AV1
新增过滤器
afireqsrc audio source filter
arls filter
zoneplate video source filter
color_vulkan filter
bwdif_vulkan filter
nlmeans_vulkan filter
xfade_vulkan filter
bwdif_cuda filter
apsnr and asisdr audio filters
Bitstream filter for editing metadata in VVC streams
Bitstream filter for converting VVC from MP4 to Annex B
scale_vt filter for videotoolbox
transpose_vt filter for videotoolbox
新增解码器
libaribcaption decoder
RivaTuner video decoder
vMix video decoder
OSQ demuxer and decoder
新增编码器
Microsoft RLE video encoder
VAAPI AV1 encoder
新增解析器、muxer & demuxer
Essential Video Coding parser, muxer and demuxer
Essential Video Coding frame merge bsf
Raw AC-4 muxer and demuxer
Raw VVC bitstream parser, muxer and demuxer
CRI USM demuxer
其他改进
support for the P_SKIP hinting to speed up libx264 encoding
Support HEVC,VP9,AV1 codec in enhanced flv format
Support HEVC,VP9,AV1 codec fourcclist in enhanced rtmp protocol
ffmpeg CLI '-top' option deprecated in favor of the setfield filter
ffprobe XML output schema changed to account for multiple variable-fields elements within the same parent element
ffprobe -output_format option added as an alias of -of
发行公告写道,这个版本已经逾期至少半年了。由于版本库中的活动不断,不得不推迟发布。最近终于能够在合并 7.0 中的一些大改动之前,对该版本进行分支。在内部,开发团队也进行了一些修改。用于编解码器和滤波器的 FFT、MDCT、DCT 和 DST 实现已完全替换为速度更快的 libavutil/tx。这使得编译后二进制文件的体积大小减少,这在小规模构建中会很明显。 在整个视频解码器中,每帧的分配总量大幅减少,从而降低了开销。此外还对 DSP 代码的许多部分进行了 RISC-V 优化,主要是对大型解码器进行了合并。开发团队称他们努力提高每个数据包的时间戳和帧持续时间的正确性,从而提升变帧率视频的准确性。下一个更新将是 7.0 大版本,计划于2024年2月发布。
2023年11月10日,FFmpeg 6.1 正式发布。按照惯例,会选择一些物理学家名字作为代号,这一新版本代号为 “Heaviside”。主要为纪念伟大的英国数学家和物理学家奥利弗・黑维塞(Oliver Heaviside)。
奥利弗・黑维塞(Oliver Heaviside) 自学成才,没有系统经历过高等教育,但在物理、数学、工程领域成果非凡,其名言一直为人所津津乐道。“数学分 2 种,严格的和物理直观化的。前者的范围窄;后者粗犷而广泛。拘泥于公式的严格证明只会令绝大多数的数学物理探究止步不前。难道我要在完全理解消化反应的所有机理以前,拒绝进食吗?”
此次发布重要信息包含以下几点:
1. 支持增强版本的 RTMP/FLV,主要支持了 HEVC、VP9、AV1 等编解码格式。由于 Adobe 已经停止 RTMP 维护更新,这导致许多公司都在通过私有的方式支持新的视频编码格式。FFmpeg 这次官方支持,长期看有可能统一混乱的私有方案,但在短期内也会增加混乱与工作量,因为企业不得不同时维护私有和开放多套标准。
2. 对新一代编码标准 VVC 和 MPEG-5 EVC (Essential Video Coding) 的 parser, muxer ,demuxer 以及 bsf 的支持。FFmpeg 社区一直在积极开发原生的 VVC 的 decoder,目前看,容器格式和 bit stream 相关的支持已经初步完成,让我们等待它原生的 VVC 解码器被合并;另一方面,MPEG-5 EVC 相关的支持工作也在积极的进行,只是其编解码器以第三方库的方式支持(https://github.com/mpeg5)。
3.FFmpeg 重新实现了自己的 FFT,用于其内部编解码器和滤波器的 FFT、MDCT、DCT 和 DST 实现已经完全被更快的 libavutil/tx 所取代;这个改动一方面带来速度上面的收益,另外一方面,也使得库的大小大为减小。
4. 硬件加速继续迭代。一方面,FFmpeg 已经支持了基于 Vulkan 的解码(当然,如同大多数硬件加速一样,它要在一定的限制条件下才能使用)。另外也进一步支持了基于 VAAP 的 AV1 编码。说到 VAAPI,最让人吃惊的莫过于,FFmpeg 通过 libva-win32 项目,可以在 WIndows 上使用 FFmpeg VAAPI 的相关功能,这要感谢微软的工程师们在 WIndows 上的 WSL 项目上的努力。
其内部也有一些优化,包含了:
1.在视频解码器中大幅减少内存分配,从而降低内存等开销
2.对 DSP 代码的许多部分进行了 RISC-V 优化,针对常用解码器已经被合并
3.提高每个数据包的时间戳和帧持续时间的正确性,从而提升变帧率视频的支持
下一个主要版本将是 7.0 版本,按照计划,将在 2024 年 2 月发布。FFmpeg 最近这些年,虽然也经历了一些波折,但发展并未停滞,相反越来越迅速,而我们也即将迎来 FFmpeg 7.0 的大版本。
最新版本:7
7.0 “Dijkstra” 现已于2024年4月上旬发布。此版本以荷兰计算机科学家 Edsger W. Dijkstra 的名字命名,一些值得注意的变化包括原生 VVC 解码器(目前处于实验阶段)、IAMF 支持以及多线程 ffmpegCLI 工具。该版本并不向后兼容,删除了 v6.0 之前废弃的 API。对大多数 library callers 来说,最大的变化是删除了旧的 bitmask-based channel layout API,取而代之的是允许自定义通道排序或 Ambisonics 等功能的 AVChannelLayout API。某些过时的 ffmpegCLI 选项也已被移除,现在需要使用兼容 C11 的编译器来构建代码。此外还添加了许多新的支持格式和编解码器、新的过滤器、API 以及较小的功能和错误修复。FFmpeg 7.0 是一个相当大的版本,与 6.1 相比,该 git 存储库包含约 100 位作者的近 2000 个新 commit,涉及约 2000 个文件中的超过 100000 行。
DXV DXT1 编码器
LEAD MCMP 解码器
使用外部库 libxevd 的 EVC 解码
使用外部库 libxeve 的 EVC 编码
QOA 解码器和解复用器
aap 过滤器
解复用、解码、过滤、编码和复用 ffmpeg CLI 现在全部并行运行
启用 gdigrab 设备使用 hwnd=HANDLER 语法抓取窗口
IAMF 原始解复用器和复用器
D3D12VA 硬件加速 H264、HEVC、VP9、AV1、MPEG-2 和 VC1 解码
tiltandshift filter and quirc filter
qrencode filter 和 qrencodesrc source
lavu/eval:在表达式中引入 randomi() 函数
VVC 解码器(实验性)
AEA muxer、fsync 过滤器
ffmpeg CLI -bsf 选项现在可用于输入和输出
ffmpeg CLI 选项现在可以用作 -/opt <path>,相当于 -opt <contents of file <path>>
showinfo bitstream filter
现在需要使用符合 C11 的编译器;且在不久的将来升级到 C17
将 QSV 编码器的默认比特率控制方法从 VBR 更改为 CQP。
删除了已弃用的 ffmpeg CLI 选项 -psnr 和 -map_channel
DVD-Video demuxer,由 libdvdnav 和 libdvdread 提供支持
ffprobe -show_stream_groups 选项
ffmpeg CLI loopback decoders
支持增强 flv 格式的 PacketType 的 PacketTypeMetadata
具有 hwaccel 解码支持的 ffplay
dnn filter libtorch backend
Android content URIs protocol
AOMedia Film Grain Synthesis 1 (AFGS1)
针对 AAC、FLAC、JPEG-2000、LPC、RV4.0、SVQ、VC1、VP8 等的 RISC-V 优化
针对 HEVC 解码的 Loongarch 优化
针对 HEVC 的重要 AArch64 优化
MP4/ISOBMFF 内的 IAMF 支持
支持 HEIF/AVIF 静态图像和平铺静态图像
AV1 中的杜比视界配置文件 10 支持
支持 MP4/ISOBMFF 中的 Ambient Viewing Environment metadata
使用 libx264、libx265 和 libsvtav1 编码时的 HDR10 metadata passthrough
v7.1 “Péter” 现已于2024年10月上旬发布,这是一个新的主要版本。该版本的一大亮点内容是在 v7.0 版中作为实验版本合并的 VVC 解码器已经稳定。一些其它内容还包括:
添加对 native AAC USAC(xHE-AAC 编码系统的一部分)解码器的支持,由于其广泛的音量标准化元数据,该格式开始被流媒体网站采用。
支持 MV-HEVC 解码,通过外部库支持 LC-EVC 解码。
合并了对 Vulkan 编码的支持,包括 H264 和 HEVC。此外,Khronos 已宣布 Vulkan 即将支持 AV1 编码,FFmpeg 旨在紧跟其后。
除上述内容外,此版本还完成了很多重要的内部工作。目前为止最突出的是针对 full-range images 所做的改进。以前,color range 数据有两条路径,没有协商机制,而且无法可靠地转发到滤波器、编码器和多路复用器。清理系统的工作始于 10 多年前,但由于系统太脆弱而停滞不前。新系统解决了这个问题,因此现在 color range 可以在任何需要的地方正确且一致地转发,并且还为更高级的协商形式铺平了道路。
以及 Matroska 和 MP4 格式现在支持裁剪 metadata。此 metadata 不仅对存档很重要,而且对 AV1 也很重要,因为硬件编码器需要它的信号,编解码器本身不支持它。