I'm having a WebBrowser application that uses the QWebEngineView (Qt 5.9)
. I want to load a page, where a Youtube video is embedded. The page loads perfectly but the video is not working.
The message I get when it tries to start is:Requests to the server have been blocked by an extension
.
I tried to activate plugins and set the feature permission but none of it makes any difference.
m_webView->settings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);
m_webView->page()->setFeaturePermission(QUrl("https://www.youtube.com/watch?v=rNSnfXl1ZjU"),
QWebEnginePage::MediaAudioVideoCapture,
QWebEnginePage::PermissionGrantedByUser);
I'm kind of new to Qt
. Do I need to enable video codecs?
Thank you very much in advance, I hope you can help me.
The following small App, works as desired. In case that I uncomment the settings section in my small App, it locks the playing of the YouTube
video.
I suggest that you manually activate all settings one by one to figure out what prevents the video from running in your environment.
The console output might be also very helpful to find the cause for your problem.
#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();
}
With all settings deactivated I'm left with the following console output:
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'.