Próbuję zbudować system, który transmituje na żywo wideo i dźwięk przechwycony przez telefony z systemem Android. Chcę użyć rejestratora multimediów do zakodowania danych, a następnie wysłać je przez RTP, ale problemem jest jak mogę uzyskać zakodowane dane w buforze.H.264 Strumieniowanie w czasie rzeczywistym
5
A
Odpowiedz
1
Nie możesz. Przynajmniej nie możesz bez niektórych hacków. Nagrywarka mediów nie obsługuje zapisywania do buforów.
Sztuką jest stworzenie rury, wyodrębnienie deskryptora rury i przekazanie jej do funkcji setOutputFile(FileDescriptor fd)
. Są pewne problemy z tym podejściem, ponieważ MediaRecorder
nie zapisuje treści multimedialnych w sposób zorientowany strumieniowo. Innymi słowy, opiera się na fakcie, że może on nawigować z powrotem do pliku i napisać później nagłówki pakietów.
Więcej szczegółów na ten temat można znaleźć tutaj: Broadcasting video with Android - without writing to local files
1
znalazłem dwie inne opcje (nie próbowałem albo):
- deskryptora pliku do bufora pamięci: http://www.devdaily.com/java/jwarehouse/android/core/java/android/os/MemoryFile.java.shtml
- Android 4.0 implementuje interfejs API multimediów OpenMAX: http://developer.android.com/about/versions/android-4.0-highlights.html
Ten drugi prawdopodobnie jest najlepszym rozwiązaniem.