anogayales hat geschrieben:Ich will die Musik in meinem Wohnheim fernsteuern. Dabei soll es möglich sein, über eine Server URL ein entsprechendes Video zu laden (via Smartphone) und dieses wird dann vom Hostrechner im Wohnheim mittels Lautsprecher ausgestrahlt.
Ich verstehe das so:
1. Der Hostrechner soll youtube-Videos abspielen und den Sound ausgeben.
Dafür kannst Du QWebkit mit Flash resp. HTML5 nutzen oder Phonon direkt. Für HTML5 bzw. Phonon solltest Du die Links für die Mpeg-Version nehmen, nicht die Flash-Links (worauf das x-flv hindeutet). Wobei ich nicht weiss, ob Phonon .flv mit ensprechendem Plugin versteht.
2. Der Player soll programmatisch steuerbar sein.
Das geht bei QWebkit über JS und bei Phonon direkt.
3. Die Steuerung soll über eine HTTP-Schnittstelle erreichbar sein.
Hierfür kannst Du in der Tat bottle verwenden.
Ich gehe davon aus, dass der Player nur eine Instanz haben soll. Ausgehend von QWebkit und Flash (womit Du den youtube-Standard- oder chromeless-Player verwenden kannst) strickst Du Dir einfach eine Qt-Klasse, die eine Video-URL entgegen nehmen kann und daraufhin abspielt (über QWebView). Die Steuerung bindest Du an die JS-API des Players an und stellt entsprechende Methoden wie skip, stop etc zur Verfügung. Diese Klasse packst Du in einen XML-RPC-Server mit entsprechenden Request-Methoden (Achtung: auf Threadsicherheit achten!)
Dann baust Du Dir eine bottle-Umgebung mit den Unterseiten für die Steuerung. In den einzelnen Requesthandlern verweisst Du auf die entsprechende Methode des XML-RPC-Servers.
Das schöne an der XML-RPC-Lösung ist die einfache Erweiterbarkeit. So könntest Du z.B. einen XML-RPC-Client fürs Smartphone bauen, der direkt mit dem Player ohne Umweg übers Web interagiert. (Der bottle-HTTP-Server wäre dann nur ein möglicher Client des XML-RPC-Servers.)
Mit einigen Verrenkungen könntest Du bottle und den Player auch direkt verheiraten. Allerdings dürfte der Aufwand, das globale Playerobjekt threadsicher über die Requesthandler zu steuern ungemein höher sein und schränkt zusätzlich die Wahl der HTTP-Server für bottle ein.
Last but not least kannst Du mit QTcpServer die Serverfunktionalität selbst vorhalten. Das ist dann ziemlich low level aber vllt. ausreichend, falls Du nur den Player steuern und keine aufwendigen Seiten ausliefern willst.