2016-08-18 8 views
1

Ich versuche, ein Video-Streaming zwischen zwei Geräten mit Android (API 9+) mit dem gleichen WiFi-Netzwerk verbunden zu implementieren. Das erste Gerät wird als kleiner http-Server betrieben, der das Video von der Kamera mit MediaRecorder aufzeichnet. Das zweite Gerät versucht, die Daten mit der Methode setDataSource aus der MediaPlayer-Klasse abzurufen.Streame Live-Video zu MediaPLayer

Ich weiß, dass ich zuerst den richtigen Header senden muss, ansonsten kann MediaPlayer die Daten nicht anzeigen. Dies sind meine Fragen:

  1. Wie sollte richtige Header an den MediaPlayer gesendet aussehen?
  2. Gibt es eine einfachere Lösung für das Streaming von Videos zwischen Android-Geräten mit API 9+?

Ich werde für den ganzen Rat dankbar sein.

Edit:

Da meine Fragen zu allgemein waren Ich werde versuchen, um genauer zu sein. Basierend auf diesem Thema: Live-stream video from one android phone to another over WiFi Ich entschied mich, einen kleinen http-Server (mit ServerSocket) zu erstellen. Wenn das zweite Gerät über Mediaplayer zu verbinden versucht, kann ich

socket.getOutputStream().write(buff, 0, readBytes); 

unter Verwendung von Daten, um es von Server zu senden, aber vor dem Senden von Daten, muss ich den Header der Antwort hinzufügen.

StringBuilder stringBuilder = new StringBuilder(); 
stringBuilder.append("HTTP/1.1 206 Partial Content\r\n"); 
stringBuilder.append("Content-Type: video/mp4\r\n"); 
stringBuilder.append("Accept-Ranges: bytes\r\n"); 
stringBuilder.append("Content-Length: XXXX\r\n\r\n"); 
socket.getOutputStream().write(stringBuilder.toString().getBytes()); 

Hier ist mein Problem. Ich weiß nicht, welche Informationen dem Header hinzugefügt werden sollten, damit die Nachricht vom MediaPlayer verstanden werden kann. Im Moment in den Protokollen sehe ich die folgenden Meldungen:

I/MediaHTTPConnection: response code = 206 
V/MediaPlayer: message received msg=100, ext1=1, ext2=-2147483648 
E/MediaPlayer: error (1, -2147483648) 
+0

Willkommen Überlauf zu stapeln. Bitte lesen Sie [Wie Sie fragen] (http://stackoverflow.com/help/how-to-ask). Eine Frage mit mehreren Fragen ist schwer zu beantworten. Bitte teilen Sie auch, was Sie versucht haben und/oder erforscht haben. – zhon

Antwort

0

Header zu senden, müssen Sie sie in einer Karte setzen, wie folgt:

Map<String, String> headers = new HashMap<>(); 
headers.put("Header", "Value"); 

media_player.setDataSource(
    getApplicationContext(), 
    Uri.parse("http://url:port"), 
     headers 
);