配景
默认自带的QWebEngine 因版权问题不支持音视频功能,须要本身编译源码以支持。
平台:Linux(UOS V20 1050)
Qt:5.15.2
准备工作
- 下载 Qt 5.15.2 对应版本源码,使用镜像网站或者Qt Maintenance Tool工具下载。
- 设置 Qt 环境变量
将以下内容追加到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
复制代码 革新使其生效
这个阶段可以预先安装所需的库:
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
复制代码 输出信息:
查看输出信息并安装缺失的库:
安装bison
安装flex
安装后,疑似有缓存,所以导致未更新,可删除build下的产物,再运行一次qmake ../qtwebengine.pro -- -webengine-proprietary-codecs
输出信息:
- Leou@Leou-PC:/media/Leou/QtSrc/Src/qtwebengine/build$ qmake ../qtwebengine.pro -- -webengine-proprietary-codecs
- Running configuration tests...
- Done running configuration tests.
- Configure summary:
- Qt WebEngine Build Tools:
- Use System Ninja ....................... no
- Use System Gn .......................... no
- Jumbo Build Merge Limit ................ 8
- Developer build ........................ no
- Sanitizer .............................. no
- QtWebEngine required system libraries:
- fontconfig ........................... yes
- dbus ................................. yes
- nss .................................. yes
- khr .................................. yes
- glibc ................................ yes
- QtWebEngine required system libraries for qpa-xcb:
- x11 .................................. yes
- libdrm ............................... yes
- xcomposite ........................... yes
- xcursor .............................. yes
- xi ................................... yes
- xtst ................................. yes
- Optional system libraries used:
- re2 .................................. no
- icu .................................. no
- libwebp, libwebpmux and libwebpdemux . no
- opus ................................. no
- ffmpeg ............................... no
- libvpx ............................... no
- snappy ............................... no
- glib ................................. yes
- zlib ................................. yes
- minizip .............................. no
- libevent ............................. no
- jsoncpp .............................. no
- protobuf ............................. no
- libxml2 and libxslt .................. no
- lcms2 ................................ no
- png .................................. no
- JPEG ................................. no
- harfbuzz ............................. no
- freetype ............................. yes
- Qt WebEngineCore:
- Embedded build ......................... no
- Full debug information ................. no
- Pepper Plugins ......................... yes
- Printing and PDF ....................... yes
- Proprietary Codecs ..................... yes
- Spellchecker ........................... yes
- Native Spellchecker .................... no
- WebRTC ................................. yes
- PipeWire over GIO ...................... no
- Geolocation ............................ yes
- WebChannel support ..................... yes
- Kerberos Authentication ................ no
- Extensions ............................. yes
- Node.js ................................ no
- Support qpa-xcb ........................ yes
- Use ALSA ............................... yes
- Use PulseAudio ......................... yes
- Qt WebEngineQml:
- Support Qt WebEngine Qml ............... yes
- UI Delegates ........................... yes
- Test Support ........................... no
- Qt WebEngineWidgets:
- Support Qt WebEngine Widgets ........... yes
- Qt PDF:
- Support V8 ............................. no
- Support XFA ............................ no
- Support XFA-BMP ........................ no
- Support XFA-GIF ........................ no
- Support XFA-PNG ........................ no
- Support XFA-TIFF ....................... no
- Qt PDF Widgets:
- Support Qt PDF Widgets ................. yes
- WARNING: 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下令

执行结束后:
- 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
测试
使用Qt的simplebrowser demo程序打开 html5test 网站测试功能:
可见已经支持了h264、mp3等音视频功能。
总结
在Linux上编译QWebEngine总体上比较容易,没有编译chromium那么困难。
https://doc.qt.io/qt-5/qtwebengine-platform-notes.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |