Um Chromecast's Streaming-Beschränkung von selbst zertifizierten https-Servern (in meinem Fall dem Subsonic-Musikserver) zu umgehen, verwende ich eine Instanz des NanoHTTPD-Servers, der bereits als Teil meiner Android-App läuft. Die Idee ist, vom Subsonic Server (SSL) zu streamen und diesen Stream mit einem neuen Stream (nicht SSL) für die NanoHTTP.Response zurück zu Chromecast zu verbinden. Ich habe den InputStream von dem Subsonic-Server funktioniert (der über den MediaPlayer abspielt), aber nicht wissen, wie unverschlüsselt für den folgenden Anruf erneut streamen:
Also in kurzen Worten, wie konvertiere ich eine HTTPS-verschlüsselte Audio zu einem entschlüsselten Audiostream während der Übertragung streamen?NanoHTTPD - https stream in http konvertieren
Antwort
Ok, geschafft, das alles funktioniert zu bekommen. Subsonic-Server mit https, auf den von Android und Chromecast mit dem selbstsignierten Zertifikat des Servers zugegriffen werden kann. Wenn https aktiviert ist, verwenden sowohl Android als auch Chromecast einen nanohttpd-Proxyserver, der auf dem Android-Client ausgeführt wird, um den Android MediaPlayer bzw. das html5-Audioelement zu streamen. Die Funktion Überschreibung der nanohttpd Server dienen auf Android läuft enthält den folgenden Code: -
int filesize = .... obtained from Subsonic server for the track to be played
// establish the https connection using the self-signed certificate
// placed in the Android assets folder (code not shown here)
HttpURLConnection con = _getConnection(subsonic_url,"subsonic.cer")
// Establish the InputStream from the Subsonic server and
// the Piped Streams for re-serving the unencrypted data
// back to the requestor
final InputStream is = con.getInputStream();
PipedInputStream sink = new PipedInputStream();
final PipedOutputStream source = new PipedOutputStream(sink);
// On a separate thread, read from Subsonic and write to the pipe
Thread t = new Thread(new Runnable() {
public void run() {
try {
byte[] b = new byte[1024];
int len;
while ((len = is.read(b,0,1024)) != -1)
source.write(b, 0, len);
source.flush();
}
catch (IOException e) {
}
}});
t.start();
sleep(200); // just to let the PipedOutputStream start up
// Return the PipedInputStream to the requestor.
// Important to have the filesize argument
return new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK,
"audio/mpeg", sink, filesize);
Ich fand, dass auf Streaming-flac-Dateien mit MP3-Transcodierungs gab mir die flac Dateigröße, aber natürlich den MP3-Stream. Dies stellte sich als schwierig für das html5-Audioelement heraus, so dass ich zu dem subsonic api-Aufruf für den Stream wieder & format = raw hinzufügte. Also unabhängig von der Benutzerkonfiguration über https streame ich das Raw-Format und alles scheint bisher gut zu funktionieren.
- 1. Konvertieren von HTTP-Proxy zu HTTPS-Proxy in Twisted
- 2. Bild in Stream konvertieren
- 3. XDocument in Stream konvertieren
- 4. Bildquelle in https konvertieren
- 5. Wie HTTPS-Stream-Wrapper ermöglichen
- 6. NanoHTTPD Server JSOn Android
- 7. So konvertieren Sie einen Webdienst von HTTP zu HTTPS
- 8. Wie https umleiten: // www zu https: // und http: // www zu https: // und http: // zu https: //
- 9. Warum ist mein HTTP/2-Stream langsamer als HTTP/1.1 und HTTPS
- 10. Verwenden von NanoHTTPD in Android
- 11. http zu https in IIS
- 12. Gemischte http/https-Site
- 13. HTTP und HTTPS iframe
- 14. Convert RTP-Video-Stream zu HTTP-Stream
- 15. HTTPS über HTTP-Proxy
- 16. Kettenumleitung https> http
- 17. PHP: HTTP oder HTTPS?
- 18. HTTPS und HTTP CORS
- 19. Wie nanohttpd Server in Android erstellen?
- 20. wie HTTP in https in Kolben
- 21. accurev konvertieren von Stream-Nummer in Stream-Name
- 22. http Live-Stream-Server-Installation
- 23. Wordpress HTTP und HTTPS Fehler
- 24. Gleiche uri http und https
- 25. Polling mit Akka-Http Stream
- 26. http zu https durch .htaccess
- 27. Doppelte Inhalte SEO http & https
- 28. Problem mit http und https
- 29. Erzwinge HTTP zu HTTPS Umleitung
- 30. Magento CDN http oder https
Als Ben Baron hier darauf hingewiesen, ... https://groups.google.com/forum/#!topic/subsonic-app-developers/xpB14ZgZ75I I 'estimateContentLength = true' im Stream Aufruf verwenden kann, um Haben Sie den Inhaltsheader die transcodierte Größe, um zu vermeiden, das unformatierte Format zu verwenden – milleph