АЗ
Андрей Зимин7. Oktober 2016 08:40

Подключение проигрывателя ютуб

Qt, YouTube

Подключаю проигрыватель ютуба в QML. Для этого в main.qml размещаю

WebView {
anchors.fill: parent
url: initialUrl + “?” + “PjFuEGSTjPk”
}

где – initialUrl идет из main.cpp в виде

QUrl initialUrl = QUrl::fromUserInput(QStringLiteral(“qrc://content/player.html”));
context->setContextProperty(QStringLiteral(“initialUrl”), initialUrl);

в ссылке player.html – это страница самосозданная и помещенная рядом с main.qml. В эту страницу по апи ютуба вшит плеер ихний.

Так вот… При запуске на компе все ок. Все работает и показывается видео. Но как только я пытаюсь запустить на мобилке, то говорит мол неможет открыть страницу по такому адресу.

Что я не то для мобилки сделал. Может где не подключил фаайл это самосозданный?

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

17
Evgenii Legotckoi
  • 7. Oktober 2016 11:04
Да не факт, что что-то не правильно сделано. Вполне может быть, что проблемы самого WebView при компилировании под ARM.
Вон, WebEngine есть же для MSVC компилятора, а для MinGW пока ещё не сделали. Так что в этом глюки могут быть.
Насколько знаю, по дефолту ютубовский проигрыватель и так-то не очень хорошо поддерживается Qt, но тут я профан, поэтому даже и не знаю, что подсказать.
    Так тут штука то в том что поригрыватель вписан в play.html. Т.е. я просто прошу вебвью открытиь эту страницу и все.
      Ну так функционал-то всех этих iframe и прочего, а также javascript должен поддерживаться нормально. А стопроцентной гарантии поддержки нет. Особенно это касается WebEngine, поскольку он по слухам менее допилен чем WebKit, от поддержки которого в Qt отказались, и который заменён на WebEngine.
        АЗ
        • 7. Oktober 2016 12:46
        Ну вот это конечно неприятно. А есть ли какая альтернатива … Ну т.е. проигрыватель чтоб ролики с ютуба проигрывать?
          АЗ
          • 7. Oktober 2016 12:59

          Опа… вот номер-то) создал эту страницу не локально а на серваке. и Она на мобилке открылась в WebView и все заработало… Т.е. вопрос все тот же … Я по ходу как-то не так передаю данные по локальному пути к этой хэтэмээль странице с плеером.))

          Но то что все работает и на мобилке и локально это факт.

          Но оставлять так это же не верно. Просто сколько запросов к этой странице станет)))

          В общем как-то я не так передаю адрес. А как верно… всю голову изломал. Прост на компето работает с этим видом передачи, а на мобилке …

            Ну теперь более понятна суть, конечно, но тогда здесь получается просто банальное обращение к серверу по определённому URL.
            Если честно, после некоторого размышления после ответа, я даже не понял, почему это на ПК заработало.
            А так да. Имеем страницу на сервере с встроенным сервером и просто открываем её в WebView. Получается топорно, но работает. И запросов будет конечно много к этой странице, хотя если кроме плеера на ней ничего нет, то и не страшно. Хотя я не знаю предполагаемого объёма трафика.

            Может Вам посмотреть документацию по API YouTube? Как вариант, в QML должно поддерживаться потоковое вещание, тот же самый функционал Multimedia, дело останется только за реализацией отправки срабатывания кнопок проигрывания.

              В общем проблема эта не уменя одного И как к ней подобраться не знаю

              вот описание ее

              http://stackoverflow.com/questions/29020930/qt-5-4-qtwebview-failing-to-load-local-html-from-qrc-on-android

              но все что там предложени у меня не работает. Что делать не знаю…

                АЗ
                • 7. Oktober 2016 16:31
                Как я понял это из-за политики безопастности QtWebView, но вот как ее отключить?
                  АЗ
                  • 8. Oktober 2016 13:09

                  Ну а вот и ответ… мать их…

                  Note: The WebView does not support loading content through the Qt Resource system.

                    Note: The WebView does not support loading content through the Qt Resource system.

                    Вау. Это я так понимаю в доках Qt написано где-то?
                    Могу тогда предложить следующий вариант.
                    Когда делаете APK для android, то можно воспользоваться директивой INSTALL, тогда можно будет указать, чтобы файл устанавливался в assets и дёргать его оттуда.
                    Один из подписчиков на YouTube так делал для базы данных SQLite, которая должна предустанавлвиваться с APK.

                    android {
                    database.files += mybase.sqlite
                    database.path = assets/
                    INSTALLS += database
                    }

                     

                      Угу. В них. В доках. Прям черным по белому.

                      А про assets это мысля тоже у некоторых проскакивала. Но вот у меня с синтаксисом не очень что-то.
                      Как прописать это в про файле если мой index.html положен в Other files, ну или я просто его рядом с main.qml кинул.?

                      PS а еще один товарисч додумался до того что в исходниках WebView свойство которое ну типа security = true он соответственно на false правил.

                        Если рядом с main.qml, то вот типо такого скорее всего будет:

                        android {
                        index.files += index.html
                        index.path = assets/
                        INSTALLS += index
                        }

                        Но это при условии, что index.html и .pro файл находятся в одном каталоге. Иначе там относительные пути надо будет описывать.

                          Неа) Не прокатывает. Ну я резместил код плеера на сервере. Думаю ни чего страшного)
                            Да конечно ничего страшного.
                            Какой главный принцип стартапа? – Сначала Тяп-Ляп, и если попёрло, то делаем нормально. Заодно и опыта будет больше через пол года. Там может быть просто напишите обработку потокового вещания с Ютуба без этой галиматьи с WebView.
                              АЗ
                              • 11. Oktober 2016 07:52
                              Не хотел новую тему создавать… Евгений, как называется свойство это… блин ну когда список подтягиваешь к верху… Ну когда конец списка, то его можно немного подтянуть и когда список отпускаешь, то он возвращается вниз))) не знаю как оно это по науке называется.
                              Мне просто его отследить надо для организации подгрузки коментов с сервака, а то то что сейчас мне не очень нравится.. Просто сейчас я отслеживаю всякие там индексы у компонентов, но вот чую, что если знать название этого свойства, то все будет ок))

                                Действительно. Не стоило из-за этого новую тему создавать. Ибо, я тоже не знаю как оно называется )))))

                                Хотя понятно, что речь идёт об автоподгрузке, но как оно называется… хз.
                                Может имеется ввиду swipe? … хотя нет…

                                  onDragEnded:  {
                                              if (refreshStart) {
                                                  root.change();
                                                  console.log("Reload data...")
                                                  refreshStart = false;
                                              }
                                          }

                                  В onDragEnded обязательно нужно задать условие относительно которого порисходит отсчет на срабатывание.

                                  В моем примере это refreshStart, который становится true если элемент листвью перешел определенную границу от края.

                                  В общем это почти не отличается от того что я делал без onDragEnded. Также слушал когда что-то там чего-то перейдет по оси Y, но тут вернее т.к. Если не делать так, то каждое изменение по оси Y приводит к созданию запроса к БД и чтоб этого не было приходится писать костыль-ограничитель, а тут в onDragEnded это костыль можно сказать написан и официально узаконен))

                                  Проще говоря onDragEnded – сигнал, который срабатывает когда заканчивается подтягивание контента. Есть еще onDragStarter и onDragChange, ну про что они думаю не стоит говорить))

                                    Kommentare

                                    Nur autorisierte Benutzer können Kommentare posten.
                                    Bitte Anmelden oder Registrieren
                                    Letzte Kommentare
                                    ИМ
                                    Игорь Максимов5. Oktober 2024 07:51
                                    Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                                    d
                                    dblas55. Juli 2024 11:02
                                    QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                                    k
                                    kmssr8. Februar 2024 18:43
                                    Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                    Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                    EVA
                                    EVA25. Dezember 2023 10:30
                                    Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                                    Jetzt im Forum diskutieren
                                    J
                                    JacobFib17. Oktober 2024 03:27
                                    добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
                                    JW
                                    Jhon Wick1. Oktober 2024 15:52
                                    Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
                                    КГ
                                    Кирилл Гусарев27. September 2024 09:09
                                    Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                                    F
                                    Fynjy22. Juli 2024 04:15
                                    при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

                                    Folgen Sie uns in sozialen Netzwerken