在 QWebEngineView 中显示(youtube)视频
Showing (youtube)-videos in a QWebEngineView
我有一个使用 QWebEngineView (Qt 5.9)
的 WebBrowser 应用程序。我想加载一个嵌入了 Youtube 视频的页面。页面加载完美,但视频不工作。
我在尝试启动时收到的消息是:
Requests to the server have been blocked by an extension
.
我尝试激活插件并设置功能权限,但 none 有什么不同。
m_webView->settings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);
m_webView->page()->setFeaturePermission(QUrl("https://www.youtube.com/watch?v=rNSnfXl1ZjU"),
QWebEnginePage::MediaAudioVideoCapture,
QWebEnginePage::PermissionGrantedByUser);
我是 Qt
的新手。我需要启用视频编解码器吗?
非常感谢你,希望你能帮助我。
以下小应用程序,按需运行。如果我在我的小应用程序中取消注释设置部分,它会锁定 YouTube
视频的播放。
我建议您一项一项地手动激活所有设置,找出是什么阻止了视频在您的环境中 运行。
控制台输出也可能对查找问题的原因很有帮助。
#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();
}
所有设置都停用后,我得到以下控制台输出:
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'.
我有一个使用 QWebEngineView (Qt 5.9)
的 WebBrowser 应用程序。我想加载一个嵌入了 Youtube 视频的页面。页面加载完美,但视频不工作。
我在尝试启动时收到的消息是:Requests to the server have been blocked by an extension
.
我尝试激活插件并设置功能权限,但 none 有什么不同。
m_webView->settings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);
m_webView->page()->setFeaturePermission(QUrl("https://www.youtube.com/watch?v=rNSnfXl1ZjU"),
QWebEnginePage::MediaAudioVideoCapture,
QWebEnginePage::PermissionGrantedByUser);
我是 Qt
的新手。我需要启用视频编解码器吗?
非常感谢你,希望你能帮助我。
以下小应用程序,按需运行。如果我在我的小应用程序中取消注释设置部分,它会锁定 YouTube
视频的播放。
我建议您一项一项地手动激活所有设置,找出是什么阻止了视频在您的环境中 运行。
控制台输出也可能对查找问题的原因很有帮助。
#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();
}
所有设置都停用后,我得到以下控制台输出:
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'.