首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在-videos中展示(Youtube) QWebEngineView

在-videos中展示(Youtube) QWebEngineView
EN

Stack Overflow用户
提问于 2019-06-24 13:09:54
回答 1查看 500关注 0票数 1

我有一个使用WebBrowser的QWebEngineView (Qt 5.9)应用程序。我想要加载一个网页,其中一个Youtube视频被嵌入。该页加载完美,但视频不工作。当它试图开始时,我得到的信息是:

Requests to the server have been blocked by an extension

我试着激活插件并设置功能权限,但这些都没有什么区别。

代码语言:javascript
复制
m_webView->settings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);

m_webView->page()->setFeaturePermission(QUrl("https://www.youtube.com/watch?v=rNSnfXl1ZjU"),
                                    QWebEnginePage::MediaAudioVideoCapture,
                                    QWebEnginePage::PermissionGrantedByUser);

我对Qt有点陌生。需要启用视频编解码器吗?提前谢谢你,希望你能帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-25 10:28:18

下面的小应用程序,按需要工作。如果我取消了我的小应用程序中的设置部分,它会锁定YouTube视频的播放。

我建议您手动激活所有设置,以确定是什么阻止视频在您的环境中运行。

控制台输出可能也非常有助于找出问题的原因。

代码语言:javascript
复制
#include <QWebEngineView>
#include <QWebEngineSettings>
#include <QApplication>

int main(int argc, char **args)
{
    QApplication app(argc, args);
    auto view = new QWebEngineView; 
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::AllowGeolocationOnInsecureOrigins, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::Accelerated2dCanvasEnabled, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::AllowRunningInsecureContent, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::AllowWindowActivationFromJavaScript, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::JavascriptCanAccessClipboard, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::FullScreenSupportEnabled, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::LocalContentCanAccessFileUrls, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::JavascriptCanOpenWindows, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::JavascriptEnabled, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::ScreenCaptureEnabled, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::PluginsEnabled, false);
    //view->settings()->setAttribute(QWebEngineSettings::WebAttribute::LocalStorageEnabled, false);

    view->setUrl(QUrl("https://www.youtube.com/watch?v=rNSnfXl1ZjU"));
    view->show();
    app.exec();
}

在所有设置被停用后,我将得到以下控制台输出:

代码语言:javascript
复制
js: Refused to display 'https://accounts.google.com/ServiceLogin?continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Fnext%3D%252Fsignin_passive%26hl%3Dde%26feature%3Dpassive%26app%3Ddesktop%26action_handle_signin%3Dtrue&hl=de&passive=true&service=youtube&uilel=3' in a frame because it set 'X-Frame-Options' to 'deny'.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56737314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档