Linux Qt5.15.2 编译QWebEngine源码支持音视频H264

背景

默认自带的QWebEngine 因版权问题不支持音视频功能,需要自己编译源码以支持。

平台:Linux(UOS V20 1050)
Qt:5.15.2

准备工作

  1. 下载 Qt 5.15.2 对应版本源码,使用镜像网站或者Qt Maintenance Tool工具下载。
  2. 配置 Qt 环境变量
vim ~/.bashrc

将以下内容追加到bashrc文件后

#QT ENV
export PATH=/home/Leou/Qt/5.15.2/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/home/Leou/Qt/5.15.2/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/home/Leou/Qt/5.15.2/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_PATH=/home/Leou/Qt/5.15.2/gcc_64/qml:$QML2_PATH

刷新使其生效

source ~/.bashrc

这个阶段可以预先安装所需的库:

On all platforms, the following tools are required at build time:

  • Python 2.7.5 or later. Python 3 is not supported.
  • Bison, Flex
  • GPerf
  • Node.js version 8 or later (version 12 or later is recommended)

这些是最基本的要求,实际上还有很多库需要安装,可参考qtwebengine-platform-notes

编译

创建build目录,并使用qmake ../qtwebengine.pro -- -webengine-proprietary-codecs命令

Leou@Leou-PC:/media/Leou/qtwebengine$ mkdir build
Leou@Leou-PC:/media/Leou/qtwebengine$ cd build/
Leou@Leou-PC:/media/Leou/qtwebengine/build$ qmake ../qtwebengine.pro -- -webengine-proprietary-codecs

输出信息:

Info: creating stash file /media/Leou/qtwebengine/build/.qmake.stash
Info: creating cache file /media/Leou/qtwebengine/build/.qmake.cacheRunning configuration tests...
Checking for architecture supported... yes
Checking for bison... no
Checking for submodule initialized... yes
Checking for build path without whitespace... yes
Checking for platform supported... 
Checking for gperf... yes
Checking for flex... no
Checking for host pkg-config... /usr/bin/pkg-config
Checking for jumbo build merge limit... 8
Checking for linker supports -z noexecstack... yes
Checking for x11... yes
Checking for libdrm... yes
Checking for xcomposite... yes
Checking for xcursor... yes
Checking for xi... yes
Checking for xtst... yes
Checking for python2... /usr/bin/python2
Checking for d-bus... yes
Checking for fontconfig... yes
Checking for freetype >= 2.4.2... yes
Checking for glib-2.0 >= 2.32.0... yes
Checking for glibc > 2.16... yes
Checking for jsoncpp... no
Checking for khr... yes
Checking for lcms2... no
Checking for libevent... no
Checking for libvpx... no
Checking for libwebp, libwebpmux and libwebpdemux... no
Checking for compatible libxml2 and libxslt... no
Checking for minizip... no
Checking for system ninja... no
Checking for nss >= 3.26... yes
Checking for opus... no
Checking for protobuf... no
Checking for re2... no
Checking for snappy... no
Checking for zlib... yes
Done running configuration tests.Configure summary:Qt WebEngine Build Tools:Use System Ninja ....................... noUse System Gn .......................... noJumbo Build Merge Limit ................ 8Developer build ........................ noSanitizer .............................. noQtWebEngine required system libraries:fontconfig ........................... yesdbus ................................. yesnss .................................. yeskhr .................................. yesglibc ................................ yesQtWebEngine required system libraries for qpa-xcb:x11 .................................. yeslibdrm ............................... yesxcomposite ........................... yesxcursor .............................. yesxi ................................... yesxtst ................................. yesOptional system libraries used:re2 .................................. noicu .................................. nolibwebp, libwebpmux and libwebpdemux . noopus ................................. noffmpeg ............................... nolibvpx ............................... nosnappy ............................... noglib ................................. yeszlib ................................. yesminizip .............................. nolibevent ............................. nojsoncpp .............................. noprotobuf ............................. nolibxml2 and libxslt .................. nolcms2 ................................ nopng .................................. noJPEG ................................. noharfbuzz ............................. nofreetype ............................. yesNote: The following modules are not being compiled in this configuration:webenginecorewebenginewebenginewidgetspdfpdfwidgetsWARNING: Tool bison is required to build QtWebEngine.WARNING: Tool bison is required to build QtPdf.WARNING: QtWebEngine will not be built.WARNING: QtPdf will not be built.Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/home/Leou/Qt/5.15.2/gcc_64'.Prior to reconfiguration, make sure you remove any leftovers from
the previous build.

查看输出信息并安装缺失的库:

安装bison

sudo apt install bison

安装flex

sudo apt install flex

安装后,疑似有缓存,所以导致未更新,可删除build下的产物,再运行一次qmake ../qtwebengine.pro -- -webengine-proprietary-codecs

输出信息:

Leou@Leou-PC:/media/Leou/QtSrc/Src/qtwebengine/build$ qmake ../qtwebengine.pro -- -webengine-proprietary-codecsRunning configuration tests...
Done running configuration tests.Configure summary:Qt WebEngine Build Tools:Use System Ninja ....................... noUse System Gn .......................... noJumbo Build Merge Limit ................ 8Developer build ........................ noSanitizer .............................. noQtWebEngine required system libraries:fontconfig ........................... yesdbus ................................. yesnss .................................. yeskhr .................................. yesglibc ................................ yesQtWebEngine required system libraries for qpa-xcb:x11 .................................. yeslibdrm ............................... yesxcomposite ........................... yesxcursor .............................. yesxi ................................... yesxtst ................................. yesOptional system libraries used:re2 .................................. noicu .................................. nolibwebp, libwebpmux and libwebpdemux . noopus ................................. noffmpeg ............................... nolibvpx ............................... nosnappy ............................... noglib ................................. yeszlib ................................. yesminizip .............................. nolibevent ............................. nojsoncpp .............................. noprotobuf ............................. nolibxml2 and libxslt .................. nolcms2 ................................ nopng .................................. noJPEG ................................. noharfbuzz ............................. nofreetype ............................. yes
Qt WebEngineCore:Embedded build ......................... noFull debug information ................. noPepper Plugins ......................... yesPrinting and PDF ....................... yesProprietary Codecs ..................... yesSpellchecker ........................... yesNative Spellchecker .................... noWebRTC ................................. yesPipeWire over GIO ...................... noGeolocation ............................ yesWebChannel support ..................... yesKerberos Authentication ................ noExtensions ............................. yesNode.js ................................ noSupport qpa-xcb ........................ yesUse ALSA ............................... yesUse PulseAudio ......................... yes
Qt WebEngineQml:Support Qt WebEngine Qml ............... yesUI Delegates ........................... yesTest Support ........................... no
Qt WebEngineWidgets:Support Qt WebEngine Widgets ........... yes
Qt PDF:Support V8 ............................. noSupport XFA ............................ noSupport XFA-BMP ........................ noSupport XFA-GIF ........................ noSupport XFA-PNG ........................ noSupport XFA-TIFF ....................... no
Qt PDF Widgets:Support Qt PDF Widgets ................. yesWARNING: Building without node.js will disable some features of QtWebEngine DevTools.Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/home/Leou/Qt/5.15.2/gcc_64'.Prior to reconfiguration, make sure you remove any leftovers from
the previous build.

执行make

make -j14

如果出错,则多执行几次make命令
在这里插入图片描述

执行结束后:

mv -f libqwebengineview.so ../../../plugins/designer/libqwebengineview.so
objcopy --only-keep-debug ../../../plugins/designer/libqwebengineview.so ../../../plugins/designer/libqwebengineview.so.debug && objcopy --strip-debug ../../../plugins/designer/libqwebengineview.so && objcopy --add-gnu-debuglink=../../../plugins/designer/libqwebengineview.so.debug ../../../plugins/designer/libqwebengineview.so && chmod -x ../../../plugins/designer/libqwebengineview.so.debug
make[3]: 离开目录“/media/Leou/QtSrc/Src/qtwebengine/build/src/plugins/qwebengineview”
make[2]: 离开目录“/media/Leou/QtSrc/Src/qtwebengine/build/src/plugins”
rm -f libQt5PdfWidgets.so.5.15.2 libQt5PdfWidgets.so libQt5PdfWidgets.so.5 libQt5PdfWidgets.so.5.15
g++ -Wl,--no-undefined -Wl,--version-script,QtPdfWidgets.version -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN -Wl,-rpath,\$ORIGIN -Wl,-rpath-link,/home/Leou/Qt/5.15.2/gcc_64/lib -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5PdfWidgets.so.5 -o libQt5PdfWidgets.so.5.15.2 .obj/qpdfview.o  -L/home/qt/openssl-1.1.1g/lib /media/Leou/QtSrc/Src/qtwebengine/build/lib/libQt5Pdf.so /home/Leou/Qt/5.15.2/gcc_64/lib/libQt5Widgets.so /home/Leou/Qt/5.15.2/gcc_64/lib/libQt5Gui.so /home/Leou/Qt/5.15.2/gcc_64/lib/libQt5Core.so -lpthread -lGL   
ln -s libQt5PdfWidgets.so.5.15.2 libQt5PdfWidgets.so
ln -s libQt5PdfWidgets.so.5.15.2 libQt5PdfWidgets.so.5
ln -s libQt5PdfWidgets.so.5.15.2 libQt5PdfWidgets.so.5.15
rm -f ../../lib/libQt5PdfWidgets.so.5.15.2
mv -f libQt5PdfWidgets.so.5.15.2 ../../lib/libQt5PdfWidgets.so.5.15.2
rm -f ../../lib/libQt5PdfWidgets.so
rm -f ../../lib/libQt5PdfWidgets.so.5
rm -f ../../lib/libQt5PdfWidgets.so.5.15
mv -f libQt5PdfWidgets.so ../../lib/libQt5PdfWidgets.so
mv -f libQt5PdfWidgets.so.5 ../../lib/libQt5PdfWidgets.so.5
mv -f libQt5PdfWidgets.so.5.15 ../../lib/libQt5PdfWidgets.so.5.15
objcopy --only-keep-debug ../../lib/libQt5PdfWidgets.so.5.15.2 ../../lib/libQt5PdfWidgets.so.5.15.2.debug && objcopy --strip-debug ../../lib/libQt5PdfWidgets.so.5.15.2 && objcopy --add-gnu-debuglink=../../lib/libQt5PdfWidgets.so.5.15.2.debug ../../lib/libQt5PdfWidgets.so.5.15.2 && chmod -x ../../lib/libQt5PdfWidgets.so.5.15.2.debug
make[2]: 离开目录“/media/Leou/QtSrc/Src/qtwebengine/build/src/pdfwidgets”
make[1]: 离开目录“/media/Leou/QtSrc/Src/qtwebengine/build/src”

可以看到lib下的产物
在这里插入图片描述

安装

直接替换安装当前Qt 的 QWebEngine

make install

测试

使用Qt的simplebrowser demo程序打开 html5test 网站测试功能:
在这里插入图片描述
可见已经支持了h264、mp3等音视频功能。

总结

在Linux上编译QWebEngine总体上比较容易,没有编译chromium那么困难。

https://doc.qt.io/qt-5/qtwebengine-platform-notes.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145190.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Docker-Windows安装使用

1.下载docker https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2.配置虚拟化环境 通过控制面板“设置”启用 Hyper-V 角色 右键单击 Windows 按钮并选择“应用和功能”。选择相关设置下右侧的“程序和功能”。选择“打开或关闭 Windows 功能”。选择“Hyper-…

解决vs2022项目文件夹内.vs文件夹容量虚高问题

打开系统显示隐藏文件夹 会在vs2022的项目文件夹内有一个.vs文件夹 在子目录里会有一个Browse.VC.db文件,我的项目代码只有120m,而这个db文件居然有70m 而且每次打开vs项目,会使这个文件发生容量变化,如果你的git项目恰好包含这个.vs文件夹,那就比较不爽了,每次都要更新这个文件…

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例 准备条件: PLC:S7-1200 1214C DC/DC/DC 系统版本4.5及以上。 机器人控制柜:安川YRC1000。 软件:TIA V17 PLC做主站,机器人做从站。 具体方法可参考以下内容: 使用的库文件为西门子 1200系列…

BUUCTF reverse wp 21 - 30

[ACTF新生赛2020]rome 无壳, 直接拖进IDA32 y键把v2改成char[49], n键重命名为iuput int func() {int result; // eaxint v1[4]; // [esp14h] [ebp-44h]char input[49]; // [esp24h] [ebp-34h] BYREFstrcpy(&input[23], "Qsw3sj_lz4_Ujwl");printf("Please…

Simulink仿真封装中的参数个对话框设置

目录 参数和对话框窗格 初始化窗格 文档窗格 为了更加直观和清晰的分析仿真,会将多个元件实现的一个功能封装在一起,通过参数对话框窗格,可以使用参数、显示和动作选项板中的对话框控制设计封装对话框。如图所示: 参数和对话框…

第5讲:v-if与v-show的使用方法及区别

v-if条件判断 v-if是条件渲染指令,它根据表达式的真假来删除和插入元素,它的基本语法如下: v-if “expression” expression是一个返回bool值的表达式,表达式可以是一个bool属性,也可以是一个返回bool的运算式 &#…

RTSP协议抓包及讲解

文章目录 前言一、RTSP 亲手搭建直播点播1、数据源为视频文件2、数据源为摄像头①、搭建 RTSP 流媒体服务器②、客户端拉流 二、RTSP 协议简介三、手撕 RTSP 协议1、Wireshark 抓包①、搭建环境②、wireshark 抓包 2、RTSP 交互流程①、OPTIONS②、DESCRIBE③、SETUP④、PLAY⑤…

buildroot移植Qt5无法显示字体问题

报错:QFontDatabase: Cannot find font directory /usr/lib/fonts. Note that Qt no longer ships fonts. Deploy some (from DejaVu Fonts for example) or switch to fontconfig. 原因:很明显是Qt没有找到字库文件; 解决方法: 1…

[old]TeamDev DotNetBrowser Crack

TeamDev DotNetBrowser将 Chromium Web 浏览器添加到您的 .NET 应用程序中。在 WPF 和 WinForms 中显示现代网页。使用 DOM、JS、网络、打印等。在 Windows x86/x64/ARM64、macOS x64/Apple Silicon、Linux x64/ARM64 上运行,支持.NET Framework 4.5 特征 HTML5、C…

神经辐射场(NeRF)2023最新论文及源代码合集

神经辐射场(NeRF)作为一种先进的计算机图形学技术,能够生成高质量的三维重建模型,在计算机图形学、计算机视觉、增强现实等领域都有着广泛的应用前景,因此,自2020年惊艳亮相后,神经辐射场也成为…

C/C++指针笔试题详解

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.指针题写出下列程序的结…

十六.镜头知识之工业镜头的质量判断因素

十六.镜头知识之工业镜头的质量判断因素 文章目录 十六.镜头知识之工业镜头的质量判断因素1.分辨率(Resolution)2.明锐度(Acutance)3.景深(DOF):4. 最大相对孔径与光圈系数5.工业镜头各参数间的相互影响关系5.1.焦距大小的影响情况5.2.光圈大小的影响情况5.3.像场中…

混淆技术研究-混淆技术-源码分析(2)

简介 OLLVM(Obfuscator-LLVM)是基于LLVM(Low Level Virtual Machine)框架的一种代码混淆器。它主要用于对C/C++和汇编语言程序进行混淆,以增加代码的复杂性,提高代码的安全性和抵抗逆向工程的能力。 IR(Intermediate Representation)是指中间表示,是编译器在将源代码…

【7.Vue 利用Heatmap.js 制作自定义热力图】

1.效果 2.背景 需要根据后端检测的设备的数值显示设备周围的空气情况,用户希望用热力图的方式来显示,于是在网上找了资料,发现可以用Heatmap.js来实现。 Heatmap.js 官网:https://www.patrick-wied.at/static/heatmapjs/ 3.引入…

基于微信小程序的宠物寄养平台小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

Docker的学习记录

Docker是一个被广泛使用的开源容器引擎,基于Go语言,遵从Apache2.0协议开源。 docker的三个概念:容器、镜像和仓库。 镜像(Image):镜像是Docker中的一个模板。通过 Docker镜像 来创建 Docker容器&#xff…

(一)TinyWebServer的环境配置与运行

Linux下C轻量级Web服务器,项目来源于:TinyWebServer 配置环境(为下载代码,编译运行做准备) 1. 安装VMware VMware官网 选择产品,点击Workstation Pro 下载试用版(注:需要在官网注册…

泡泡玛特城市乐园即将开园 解锁“文化+科技”潮流空间

近年来,泡泡玛特以潮玩IP为核心,不断拓展业务版图,推进国际化布局同时实现集团化运营,而泡泡玛特首个城市乐园即将开业。 据了解,泡泡玛特城市乐园是由泡泡玛特精心打造的沉浸式IP主题乐园,占地约4万平方米…

7.2 怎样定义函数

7.2.1 为什么要定义函数 主要内容: 为什么要定义函数 C语言要求所有在程序中用到的函数必须“先定义,后使用”。这是因为在调用一个函数之前,编译系统需要知道这个函数的名字、返回值类型、功能以及参数的个数与类型。如果没有事先定义&…

第三章 图标辅助元素的定制

第三章 图标辅助元素的定制 1.认识图表常用的辅助元素 ​ 图表的辅助元素是指除了根据数据绘制的图形之外的元素,常用的辅助元素包括坐标轴、标题、图例、网格、参考线、参考区域、注释文本和表格,它们都可以对图形进行补充说明。 ​ 上图中图表常用辅…