Потоковое видео из MediaRecorder через LocalSocket
Я пытаюсь отправить h264 / AAC-видео из Android MediaRecorder через локальный сокет. Цель состоит в том, чтобы отправить видео на сервер WOWZA через RTMP или RTSP, но это доставляет мне много хлопот, и сейчас я просто пытаюсь записать данные в файл из LocalServerSocket.
Вот код Извините, это не совсем чисто, но я потратил часы на тестирование многих вещей, и мой проект сейчас беспорядок.
В разделе «Действия с камерой» настройка выходного файла:
LocalSocket outSocket = new LocalSocket();
try {
outSocket.connect(new LocalSocketAddress(LOCAL_SOCKET));
} catch (Exception e) {
Log.i(LOG_TAG, "Error connecting socket: "+e);
}
mMediaRecorder.setOutputFile(outSocket.getFileDescriptor());
Реализация LocalServerSocket:
try {
mLocalServerSocket = new LocalServerSocket(mName);
} catch (Exception e) {
Log.e(LOG_TAG, "Error creating server socket: "+e);
return;
}
while (true) {
File out = null;
FileOutputStream fop = null;
try {
mLocalClientSocket = mLocalServerSocket.accept();
InputStream in = mLocalClientSocket.getInputStream();
out = new File(mContext.getExternalFilesDir(null), "testfile.mp4");
fop = new FileOutputStream(out);
int len = 0;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) >= 0) {
Log.i(LOG_TAG, "Writing "+len+" bytes");
fop.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
fop.close();
mLocalClientSocket.close();
} catch (Exception e2) {}
}
}
Проблема в том, что файл, полученный в результате этого, не читается любым медиаплеером. Как вы думаете, это из-за проблемы с кодировкой? Этот код должен генерировать двоичный файл, если я хорошо понимаю ?!
Заранее спасибо, ура.