关于视音频格式的一些吐槽

gd-ng的视音频解码分别由ffmpeg和qtwebengine负责,但由于两个项目的某些bug或者专利纠纷,导致直接用它们会遇到一些问题。解决这些问题结论是:

视频编码格式兼容性: AV1 > H264 > H265(HEVC)

AV1是开源格式,而另外两种是有专利的。AV1是这三种里面最新的,也是压缩后文件最小的。在qtwebengine的官方版本中受到支持。但其硬件编解码只有较新的设备才支持。比如苹果直到M3才支持,而这时其他厂的新设备早就支持几年了

H264是最老、最流行的格式,QtWebengine的官方版本不支持该格式,除非自己手动重编译,通过-DQT_FEATURE_webengine_proprietary_codecs=ON 启用。目前只知道Arch Linux、Debian、Ubuntu、Fedora的QtWebengine是重新编译该包实现了对该格式的支持。

H265出现的时间介于两者中间,qtwebengine的官方版本也不支持该格式,自己编译在windows上可以支持该格式,而Linux仍不支持,甚至该平台的谷歌浏览器也不支持该格式。但FFmpeg和Nvidia等早就在Linux上实现的该格式的编解码,不好说是专利问题还是谷歌为推广自家格式不择手段

音频格式:不要用spx

FFMpeg 7.x开始,其内置spx解码器一直处于不可用状态。见 issue

但目前的QtMultimedia和FFMpeg深度绑定,使得用户要么重新编译当前版本ffmpeg,要么连着QtMultiMedia一起重新编译。

release/6.x分支无此bug。
对于release/7.x分支,可以通过合并4a0e1cfc14b837实现该问题的修复
对于master分支,由于最近引入的提交f6986e7又将该解码器破坏,需要撤销才可用。

长期来看,由于该格式过于冷门,不能保证以后FFMpeg还会引入破坏性提交,请用格式转换工具将其转为其他格式。

4 个赞

如果考虑其他词典软件的兼容性, H264 是最佳选择。我也吐槽下图片里 ttf 这格式最好也不要再用了,浏览器不直接支持的格式都不建议再使用了,ttf 支持多种压缩算法,但论坛里经常用的那个是最古老的一种,新写的第三方的图片格式解析器大多都不支持那种压缩算法了。

https://caniuse.com/?search=h264

连主流linux发行版都开启h264支持选项了,也不知道qt官方在坚持啥子

1 个赞

另:qtmultimedia原有的gstreamer后端已弃用了,所以只有ffmpeg后端了

由于woolyss网站有可能被墙,以及GD-ng的CORS问题使得无法直接加载,故将其部分视频离线下来作为视频解码测试,里面包含了AV1、H264、H265和VP9的测试视频资源。
codectest.7z (10.0 MB)

词条:codec或者test或者video

1 个赞

果然,沟槽的safari还不支持av1,这么一来貌似vp9是兼容性最好的

1 个赞