为什么qt webengine不能播放youtube直播视频流

问题描述

我正在使用 webengine 创建一个简单的网络浏览器。我去了 youtube 并尝试播放直播但失败了。每个需要在浏览器中支持 HTML5 视频的视频都会发生同样的事情。我没有看到任何与此相同的最近问题。 Qt 表示 webengine 从他们发布的 Qt5 开始支持 HTML5。对相同问题的一些旧答案建议他们自己编译 qtwebengine。我尝试了几次都失败了(可能是我的电脑无法完成这项工作)。其他人说从代码中启用专有插件。但就我而言,它也不起作用。

运行代码也会记录错误 WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation Failed.

这是我的简单 qml 代码

import QtQuick 2.12
import QtQuick.Window 2.12
import QtWebEngine 1.0

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
    WebEngineView{
        anchors.fill:parent
        url:"https://www.youtube.com/watch?v=iL53Y28Rp84"
    }
}

Qt 版本:5.15.1(GNU 公共许可证)

使用 qt 在线安装程序安装。

解决方法

您的问题很可能是 - 正如控制台中的错误所说 - 您尚未初始化 Web 引擎。在您的 main() 中,您必须在进行任何渲染之前调用 QtWebEngine::initialize()。所以你的主函数应该是这样的:

#include <QtWebEngine>

int main(int argc,char* argv[]) 
{
    QGuiApplication a(argc,argv);
    QtWebEngine::initialize();
    (...)
}

根据 Qt 文档,initialize() 函数确保可以在 GUI 和渲染器进程之间共享 OpenGL 上下文。 Link to the Qt documentation.

,

您收到的错误消息很简单,他们已经在另一个答案中为您提供了解决方案,而我的答案是解决根本问题。无法播放 youtube 视频,因为 Chromium(和 Qt WebEngine)不是通过启用专有编解码器编译的。解决方案是在启用该标志的情况下重新编译 Qt WebEngine。

从评论中可以看出OP使用的是Qt 5.15.1,所以他必须遵循以下步骤:

sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
sudo apt-get install -y libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libxtst-dev libxss-dev libdbus-1-dev libevent-dev libfontconfig1-dev libcap-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libegl1-mesa-dev gperf bison nodejs
git clone -b 5.15.1 git://code.qt.io/qt/qtwebengine.git
cd qtwebengine
git submodule update --init
/path/of/Qt/5.15.1/gcc_64/bin/qmake . -- -webengine-proprietary-codecs
make
make install

注意:根据评论中显示的日志 /path/of/Qt/5.15.1/gcc_64/bin/qmake 在您的情况下是 /mnt/volume1/main_file_folder/Home/Qt/5.15.1/gcc_64/bin/qmake