在Qt5.2版本下,我使用了QtWebView,它可以自动调用第三方扩展来支持avi、mpeg、mov、flv等视频格式。但是当我升级到Qt5.10,将QtWebView改成QtWebengineView后,效果不同了,无法调用第三方扩展。如果我想用 ffmpeg 修改 chromium 源以支持 QtWebengine 的所有视频格式,我该怎么办?
4 回答
您不需要使用 ffmpeg 来支持所有视频格式。
就像Vladimir所说,按照官方构建说明和音频/视频页面。
@ Vladimir:我认为您不能启用对 Google Chrome 不支持的视频和音频格式的支持。
是的你可以。我们使用所有编解码器(AVC/H.264、HEVC/H.265、MPEG-4...)编译 Chromium,并且可以打开许多其他文件类型(MOV、AVI、MKV、M2TS...)。按照我们的说明(GN 标志),您将能够使用所有编解码器构建 Chromium。HEVC/H.265 更复杂。检查Chromium 二进制文件和文件类型检查器。一切都是完全免费和开源的。自己做!;)
如果您使用官方构建指令构建 Chromium ,那么您只需将以下选项添加到args.gn
文件中:
proprietary_codecs=true
ffmpeg_branding="Chrome"
对于 QtWebEngine,您需要做的就是配置 Qt 以使用 -proprietary-codecs (< Qt 5.12) 或 -webengine-proprietary-codecs (Qt 5.12+) 启用专有编解码器
如果您使用 -system-webengine-ffmpeg 进行额外配置,您还将使用系统 FFmpeg 及其支持的所有编解码器。它仍然不支持 Chrome 不支持的任何容器格式。
没有-webengine-proprietary-codec -system-webengine-ffmpeg
qtwebengine 将支持以下
音频编解码器:opus、vorbis、flac。
视频编解码器:vc8、vc9。
如果像这样重新编码您的视频,QtWebEngine 能够播放您的视频:
ffmpeg -i video.mp4 -c:v vp9 -c:a libopus -f webm video.webm