Video in applicazione Qt S60?
-
19-09-2019 - |
Domanda
Qualcuno ha costruito un'applicazione Qt S60 (3rd edition, FP2) che svolge (in streaming o locale) video?
Voglio giocare il video 'in' un widget, non con (diciamo) QDesktopServices.
So che c'è la documentazione su come fare questo con Symbian, come ad esempio qui e qui ma sono ancora bloccati.
(Ci scusiamo in anticipo per il cross-posting:. Ho chiesto altrove, ma senza successo)
Soluzione
Qt 4 include una suite di API multimediali chiamati Phonon, che ti permettono di fare proprio questo. Sono attualmente in corso di attuazione per Symbian - mentre la pre-release Qt per S60 "Torre" non include il supporto per Phonon su Symbian, Qt 4.6 farà.
Nel frattempo, l'unica opzione è quella di utilizzare le API MMF Symbian direttamente. In particolare, il tuo video widget - o di un oggetto di proprietà di essa - avranno bisogno di creare un'istanza di CVideoPlayerUtility
, e quindi avranno bisogno di implementare MVideoPlayerUtilityObserver
. Il lettore video API richiede al cliente di fornire un RWindow in cui visualizzare il video - questo può essere ottenuto chiamando QWidget::winId()
, che restituisce un puntatore CCoeControl*
. È quindi possibile ottenere un handle di finestra chiamando
RWindow& window = *static_cast<RWindow*>(widget->winId()->DrawableWindow())
Tutto sommato però, la riproduzione di video da un'applicazione Qt (o qualsiasi app) su Symbian attualmente richiede un bel po 'di lavoro - soprattutto se si desidera supportare dinamica ridimensionamento e / o ri-posizionamento del contenuto video . Si noti inoltre che il modo in cui Qt è attualmente implementato su Symbian significa che lo spostamento altri widget (parzialmente o completamente) sulla parte superiore del widget di video non funziona correttamente - il video continuerà ad apparire sulla parte superiore. Questo è dovuto al fatto che la chiamata QWidget::winId()
attualmente non causa Qt per creare una finestra nativa Symbian, e saranno corrette 4.6.
In sintesi, se non si è in fretta per fare questo, probabilmente è meglio aspettare la 4.6 beta che è dovuto in breve tempo settimane.