Ich muss von einer Android-Kamera/einer Datei zu einem entfernten ffserver streamen, der mein Video übertragen wird. Auf dem Desktop in Ubuntu kann ich dies tun, indem ich einen Befehl wie folgt ausgebe:
ffmpeg -f video4linux2 -s 640x480 -r 25 -i /dev/video0 http://192.168.0.20:8090/cam1.ffm
oder eine Datei so streamen:
ffmpeg -i /home/kev/share/movie.mp4 http://192.168.0.20:8090/cam1.ffm
Also will ich im Grunde das oben genannte von Android aus tun können. Nach mehreren Suchen habe ich bis jetzt folgendes getan - ich bin auf diesen Link gestoßen http://bambuser.com/opensource von dem ich die ffmpeg-Quelle heruntergeladen und erstellt habe. Der Build gibt mehrere Dinge aus: 1. Shared Libraries [libavcodec, libavcore, libavdevice, libavfilter,libavformat,libavutil,libswscale] 2. Ausführbare Dateien [ffmpeg, ffprobe]
Ich bin mir nicht sicher, wie ich meine Funktionalität mit diesen Ressourcen verbinden soll. Dies ist, was ich bis jetzt versucht habe: 1. Die Libraries in meiner Activity geladen, indem ich System.loadLibrary() verwendet habe, dann die ffmpeg-Ausführbare Datei in den Assets-Ordner kopiert, die ich zur Laufzeit in das "files"-Verzeichnis meiner Anwendung kopiert habe. Dann habe ich Berechtigungen für die Ausführbare Datei mit Runtime.getRuntime().exec() gesetzt. Der letzte Schritt war dann, sie in Java mit folgender Anweisung auszuführen:
Runtime.getRuntime().exec("ffmpeg -i file:///android_asset/movie.mp4http://:8090/cam1.ffm");
2. ffmpeg.c, die Shared Libraries und den "include"-Ordner, der vom Build generiert wurde, in meinen jni-Ordner kopiert und eine JNI-Funktion hinzugefügt, die sich um die main() Funktion in ffmpeg.c wickelt. Mit diesem Ansatz musste ich mehrere Header-Dateien aus der ffmpeg-Quelle kopieren, damit der ndk-build erfolgreich ist, und ich bezweifle stark, ob dies der richtige Weg ist.
Die oben genannten beiden Ansätze haben bei mir nicht funktioniert, ich bin mir nicht sicher, wo ich falsch liege, also wäre jegliche Hilfe, wie man einfach ein ffmpeg-Streaming wie eine mp4-Datei von Android aus durchführen kann, sehr geschätzt.