2012-12-24 20 views
9

Chcę używać elementu QML z Video/MediaPlayer w mojej aplikacji i odtwarzać wideo ze strumienia niestandardowego. Wydaje się, że obsługuje to QMediaPlayer, ponieważ można go odczytać z pliku QIODevice, który może wykonać dowolną czynność. Ale MediaPlayer obsługuje tylko adres URL.Obsługa niestandardowych protokołów URL Qt 5

Czy istnieje sposób na zarejestrowanie własnego schematu URL, który wykorzystuje mój własny protokół przesyłania strumieniowego? Na przykład, powiedzmy chciałem zrobić rtsp2://..., mógłby zrobić coś niejasno jak:

class Rtsp2 : public QIODevice 
{ 
    // open, read, seek, close, etc. 
} 

QCoreApplication::registerUrlProtocol("rtsp2", Rtsp2); 
+1

handeling URL jest os specifick. –

Odpowiedz

2

Nie wyglądał na szczegóły, ale silnik QML ma QNetworkAccessManager to wykorzystuje do łączności. Możesz dodać własne protokoły w warstwie QNAM, dzieląc podklasy i przechwytując metodę createRequest. Podejrzewam jednak, że QMediaPlayer może nie używać tego QNAM do ładowania mediów, ponieważ podstawowa warstwa mediów często zapewnia własną abstrakcję IO.

(także dodawanie własnych protokołów do QNAM nie jest dokładnie trywialne - idealnie byłoby proste wezwanie „registerProtocolFor”, ale niestety nie jest to przypadek)