Was ich will, ist broadcast
ein Android-Kamera-Video zu entfernten Standorten, für jedermann, das Video auf ihrem Handy oder Website zu sehen. Ich war erfolgreich zu unicast
es zum vlc Spieler auf meinem PC. Ich versuchte red5
Server, Adobe media server
, ffmpeg
Server aber alle in vail. Jeder von ihnen konnte nur broadcast
Video aus einer vorbespielten Datei, aber nicht aus einem Live-Stream. Kann mir jemand vorschlagen, was ich tue.Broadcasting Android Kamera Video
Antwort
Ich lese (ich glaube es war sogar auf Stackoverflow), dass Sie den MediaRecorder mit einem FileHandle einer TCP-Verbindung versorgen können. Dann können Sie diese Verbindung anhören, die Daten lesen, paketieren und als RTSP/RTP-Stream erneut senden.
Wenn ich zufällig den ursprünglichen Beitrag finde, werde ich es hier verweisen.
EDIT:
Der ursprüngliche Beitrag war: Streaming Video From Android
Und der Teil über den FileDescriptor ist aus: http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system
Nur für den Fall, fahre ich nach Beispiel aus dem Blog:
String hostname = "your.host.name";
int port = 1234;
Socket socket = new Socket(InetAddress.getByName(hostname), port);
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
MediaRecorder recorder = new MediaRecorder(); // Additional MediaRecorder setup (output format ... etc.) omitted
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.prepare();
recorder.start();
Allerdings sendet dies nur das Video Fi le Daten über den Draht. Sie können es speichern und dann wiedergeben. Aber wie gesagt, es ist noch kein Stream.
UPDATE: Sie müssen nicht einmal einen TCP-Socket für den ersten Schritt verwenden. Ich habe gerade über "LocalSocket" (1) gestolpert, das auch ein FileHandle bekommt, um den MediaRecorder zu füttern. Diese lokalen Sockets sind "AF_LOCAL/UNIX Domain Stream Sockets". Siehe http://developer.android.com/reference/android/net/LocalSocket.html
Ich habe nicht alle oben genannten ab heute selbst versucht, wird aber bald. Also vielleicht kann ich in naher Zukunft mehr Hilfe sein :)
(1) LocalSocket ist aus Sicherheitsgründen auf neueren Android-Versionen nicht verwendbar! Siehe Update vom 2015-11-25.
UPDATE 2: Gerade sah in den Android Quellen die "OUTPUT_FORMAT_RTP_AVP". Aber es ist versteckt :(Also ich denke, es wird in Zukunft API Versionen von Android zur Verfügung https://github.com/android/platform_frameworks_base/blob/master/media/java/android/media/MediaRecorder.java Linie 219:.
public static final int OUTPUT_FORMAT_RTP_AVP = 7;
ich nicht versucht haben, nur die Haut trickst durch eine hartkodierte 7
bietet ... Wenn jemand hat, lassen Sie einen Kommentar hier
UPDATE 2015-11-25
ich lief in libstreaming: https://github.com/fyhertz/libstreaming ich habe schaue nicht zu tief hinein, aber es scheint, dass man viel über das Streaming von Android aus diesem Projekt lernen kann (wenn man es nicht nur benutzt).Ich lese es, dass die LocalSocket Lösung für neuere Android-Versionen ungültig ist :(Aber stellen sie eine Alternative. ParcelFileDescriptor
Ich konnte auf diese Weise roh Stream-Server schieben, aber nie einen Sinn worden Lage aus Sie können es Griff des Client-Sockets geben und alles auf Server –
schieben Ich denke, es wird in einigen Dateipaketierung sein. So müssen Sie es zuerst entpacken, um die Rohdaten zu erhalten und dann in RTP-Pakete neu zu paketieren. H264 unterscheidet sich von MPEG_4_SP im Dateiformat – Fildor
Es wäre sehr interessant für mich, eine lokal gespeicherte Audiodatei auf meinem Android zu speichern und per RTP an meinen PC zu schicken (selbe Wlan), wo ich es anhören kann. Irgendwelche Ideen, wie ich kann tun Sie das? – B770