Видео в приложении Qt S60?
-
19-09-2019 - |
Вопрос
Кто-нибудь создал приложение Qt S60 (3-е издание, FP2), которое воспроизводит (потоковое или локальное) видео?
Я хочу воспроизводить видео «в» виджете, а не (скажем) с помощью QDesktopServices.
Я знаю, что есть документация о том, как это сделать с помощью Symbian, например здесь и здесь но я все еще застрял.
(заранее извиняюсь за кросспостинг:Я спрашивал в другом месте, но безуспешно.)
Решение
Qt 4 включает набор мультимедийных API под названием Phonon, который позволяет вам делать именно это.В настоящее время они реализуются для Symbian - в то время как Предварительная версия Qt для S60 «Tower»не включает поддержку Phonon на Symbian, подойдет Qt 4.6.
В то же время ваш единственный вариант — напрямую использовать API-интерфейсы Symbian MMF.В частности, вашему видео-виджету или объекту, принадлежащему ему, потребуется создать экземпляр CVideoPlayerUtility
, и, следовательно, необходимо будет реализовать MVideoPlayerUtilityObserver
.API видеоплеера требует, чтобы клиент предоставил RWindow для отображения видео — это можно получить, вызвав QWidget::winId()
, который возвращает CCoeControl*
указатель.Таким образом, вы можете получить дескриптор окна, вызвав
RWindow& window = *static_cast<RWindow*>(widget->winId()->DrawableWindow())
В целом, однако, воспроизведение видео из приложения Qt (да и вообще любого приложения) на Symbian в настоящее время требует довольно много работы, особенно если вы хотите поддерживать динамическое изменение размера и/или перемещение видеоконтента.Также обратите внимание, что способ реализации Qt в настоящее время на Symbian означает, что перемещение других виджетов (частично или полностью) поверх виджета видео не будет работать корректно — видео будет продолжать появляться поверх виджета.Это связано с тем, что вызов QWidget::winId()
в настоящее время не заставляет Qt создавать собственное окно Symbian и будет исправлено в версии 4.6.
Подводя итог, можно сказать, что, если вы не торопитесь, вероятно, лучше дождаться бета-версии 4.6, которая выйдет через несколько недель.