FFMPEG 7.0分支已经创建,预计将于4月发布。让我们看一下7.0的主要更新。
0。维护工作
对于任何成熟的软件,每个版本都必须包含大量的错误文件和清理。维护工作不会出现在ChangElog中,这不是引人注目的事情,但是人力投资的比例最高,这是项目长期稳定性的保证。
维护工作中必须有两个人。 Andreas Rheinhardt进行了很多清理和重建,Michael Niedermayer解决了很多安全漏洞(不要被很多人害怕,其中许多是整数溢出)和非代码维护工作。
1。C语言版本升级C11
编译FFMPEG执行配置阶段时,配置脚本将检查编译器对C语言版本的支持。 FFMPEG 7.0将C语言版本的要求提高到C11(请注意不要与C ++ 11混淆)。如果编译器支持C17,则默认使用C17。
如果您仍在使用旧的编译器版本开yun体育app官网网页登录入口,则可能无法编译FFMPEG 7.0。我不确定特定的编译器版本要求。总体情况是GCC 4.9对C11有全力支持,而Visual Studio 2019对C11有全面的支持。
2。H.266解码器
FFMPEG没有内置的AV1解码器,这是FFMPEG项目的沉重打击(尽管DAV1D项目已经迅速发展,并且在促进AV1标准方面发挥了重要作用)。
看到FFMPEG H.266再次朝AV1转向AV1,它仅由第三方解码器打包,但我从没想过未来很明显。 FFMPEG迎来了其H.266解码器,谢谢Nuo mi!
FFMPEG H.264解码器是一代的经典,就像H.264标准一样。
FFMPEG H.265解码器的实施过程是传奇的,是GSOC(Google of Code)项目带来的,但是H.265解码器纠缠在H.265 H.265的专利问题中。它发生了悲剧,有些是停滞不前的,有些又恢复了生命。整体架构不是理想的。
FFMPEG H.266刚刚起步,还有很多工作要做。 Nuo Mi建立了有效的体系结构。作为音频和视频的枢纽,FFMPEG可以吸引更多的高级专家来改善H.266解码的功能 - 这是我的理想选择。现实可能是,大工厂正在隐藏和滚动,直到它飞起来。

3。ffmpeg命令行多线程重建
FFMPEG命令行的多线程重构的工作花费了两年多,并最终在版本7.0中完成。关于这项工作,已经写了一篇文章“对FFMPEG CMD多线程重建的粗略解释”。我不会谈论多线程重建的好处。最近,逐渐发现了多线程重建带来的一些缺点,这是值得注意的。
为了改善吞吐量,多线程重建会增加内存足迹。如果纯CPU处理,则背景服务器具有足够的内存容量且影响很小。但是,对于硬件编解码器和过滤器,增加AVFRAME的数量可能会导致GPU内存分配管理异常。这里需要一些验证工作。
另一个缺点是在多线程重建过程中丢失了某些功能,例如另一篇文章中提到的视频预览功能。
4。ffplay支持硬件解码和渲染
这是我实施的功能,主要是为了促进开发和测试。有关详细信息,请参阅另一个文档“为FFPlay添加硬件解码和渲染”。
5。读写QR码
FFMPEG 7.0支持读取和编写QR码,并依靠两个第三方库:libqrencode和libquirc。
有些人可能会认为FFMPEG读取和编写QR码的功能有些奇怪,但是我知道QA同学在视频质量测试中长期使用了QR码,但是它们是使用OpenCV进行操作的。 QR码是反压缩的,可用于检测视频是否已丢弃,重复,失败等,并且有很大的播放空间。当然,最简单的是插入小广告...
这是添加QR码的示例kaiyun全站网页版登录,该QR码为每个帧提供索引顺序,时间戳和GMTime:
./ffmpeg -hwaccel cuda \-i foo.mp4 \-fps_mode passthrough \-an \-c:v hevc_nvenc \-vf qrencode=qrcode_width=main_w/5:text="%{n} %{pts} %{gmtime}" \-t 60 \bar.mp4
影响:

让我们在视频中确定QR码:
./ffmpeg -i bar.mp4 -vf quirc -frames 10 -f null -Found QR code at position 0,0 - 0,384 with payload: 3 0.166000 2024-03-31 14:45:00Found QR code at position 0,0 - 0,384 with payload: 4 0.199333 2024-03-31 14:45:00Found QR code at position 0,0 - 0,384 with payload: 5 0.232667 2024-03-31 14:45:00Found QR code at position 0,0 - 0,384 with payload: 6 0.266000 2024-03-31 14:45:00Found QR code at position 0,0 - 0,384 with payload: 7 0.299333 2024-03-31 14:45:00Found QR code at position 0,0 - 0,384 with payload: 8 0.332667 2024-03-31 14:45:00Found QR code at position 0,0 - 0,384 with payload: 9 0.366000 2024-03-31 14:45:00
除了打印文本信息外,该信息还将添加到每个帧的元数据中以进行处理。
6。AvfilterAI框架增加了Libtorch后端
FFMPEG 7.0支持三个后端:TensorFlow,OpenVino和Libtorch。新添加的Libtorch后端由英特尔贡献。
7。FLV支持HDR
朱·彭菲(Zhu Pengfei)以增强的RTMP标准实现PacketTypemetadata,从而支持HDR的功能。
8。Android内容URIS协议
它主要方便访问Android上的文件。请参阅另一篇文章“如何读取FFMPEG上的Android上的文件”。
9。D3D12VA硬件加速解码H264,HEVC,VP9,AV1,MPEG-2,VC1
这部分也由英特尔(此处@NVIDIA和@AMD)贡献。我不熟悉Windows开发,所以我在这里跳过。
10。
FFMPEG最初是由Avfilter实施的ShowInfo,用于查看解码的AVFrame信息。现在,已经添加了BSF ShowInfo来查看流数据包信息。它可以用作方便的小工具。例子:
./ffmpeg -i foo.mp4 \-an \-c copy \-bsf:v showinfo \-f null -n: 0 size: 21691 pts:0 pt:0 dts:-3600 dt:-0.04 ds:3600 d:0.04n: 1 size: 35 pts:3600 pt:0.04 dts:0 dt:0 ds:3600 d:0.04n: 2 size: 49 pts:7200 pt:0.08 dts:3600 dt:0.04 ds:3600 d:0.04n: 3 size: 4568 pts:14400 pt:0.16 dts:7200 dt:0.08 ds:3600 d:0.04n: 4 size: 577 pts:10800 pt:0.12 dts:10800 dt:0.12 ds:3600 d:0.04n: 5 size: 5205 pts:21600 pt:0.24 dts:14400 dt:0.16 ds:3600 d:0.04n: 6 size: 532 pts:18000 pt:0.2 dts:18000 dt:0.2 ds:3600 d:0.04……
11。MPEG-5基本视频编码(EVC)
EVC基本上是H.266(VVC)的标准,但晋升似乎并不理想。作为一个新标准,FFMPEG具有支持,并通过第三方库实施kaiyun.ccm,依靠XEVD和XEVE的两个库,这些库主要由三星赞助。如何在及时验证发展。
12。回环解码器
Loopback解码器是FFMPEG命令添加的新功能。它允许编码器的输出传递到解码器,然后重复解码,过滤器和其他处理,例如:
ffmpeg -i INPUT \-map 0:v:0 -c:v libx264 -crf 45 -f null - \-dec 0:0 -filter_complex '[0:v][dec:0]hstack[stack]' \-map '[stack]' -c:v ffv1 OUTPUT
似乎可以在编码后同时输出编码质量信息,这对编码器开发人员更有用。
13。其他
还有一些新的编解码器和过滤器,因此我不会一个一个介绍它们。复制完整的变形值如下:
-DXV DXT1编码器
- LEAD MCMP解码器
-EVC使用外部库Libxevd解码
- 使用外部库libxeve编码EVC
- QOA解码器和Demuxer
- AAP过滤器
- 脱去,解码,过滤,编码和序列
FFMPEG CLI现在并行运行
- 启用Gdigrab设备可以使用HWND =处理程序语法抓住窗口
- IAMF RAW DEMUXER和MAXER
-D3D12VA硬件加速H264,HEVC,VP9,AV1,MPEG-2和VC1解码
-TiltandShift滤波器
-QRencode Filter和Qrencodesrc源
- Quirc过滤器
- lavu/eval:简介randomi()函数在表达式中
-VVC解码器
-Fsync滤波器
- 随时间的原始字幕(RCWT)封闭字幕Muxer
-FFMPEG CLI -BSF选项现在可以用于输入和输出
-FFMPEG CLI选项现在可以用作 - /opt
,等效
到-opt>
- ShowInfo bitstream滤波器
- 现在需要一个符合C11的编译器;请注意,此要求
在不久的将来会碰到C17,因此请考虑更新您的
如果缺乏C17支持,建立环境
- 将默认的比特率控制方法从vbr更改为QSV编码器的CQP。
- 删除了弃用的FFMPEG CLI选项-PSNR和-MAP_CHANNEL
-DVD-VIDEO DEMUXER,由libdvdnav和libdvdRead提供支持
-ffprobe -show_stream_groups选项
-ffprobe(与-export_side_data film_grain)现在打印电影谷物元数据
- AEA Muxer
-FFMPEG CLI环回解码器
- 支持PacketType的PacketTypemetadata以增强的FLV格式
-FFPlay带有HWACCEL解码支持(通过Libplacebo对Vulkan渲染器的依赖)
-DNN滤镜libtorch后端
- Android内容URIS协议

