Показ (youtube) -видео в QWebEngineView - PullRequest
1 голос
/ 24 июня 2019

У меня есть приложение WebBrowser, которое использует QWebEngineView (Qt 5.9).Я хочу загрузить страницу, на которой размещено видео с YouTube.Страница загружается отлично, но видео не работает.При попытке запуска я получаю сообщение:
Requests to the server have been blocked by an extension.

Я попытался активировать плагины и установить разрешение для функции, но ни одно из них не имеет значения.

m_webView->settings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);

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

Я новичок в Qt.Нужно ли включать видео кодеки?Заранее большое спасибо, надеюсь, вы мне поможете.

1 Ответ

0 голосов
/ 25 июня 2019

Следующее небольшое приложение, работает как нужно.В случае, если я раскомментирую раздел настроек в моем небольшом приложении, он блокирует воспроизведение видео 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'.
...