У меня есть приложение, которое передает потоковое видео/аудио с устройства Android на сервер. Потоковая передача работает нормально, но когда я сохраняю потоковые данные для MediaRecorder, я не могу воспроизвести файл.
Код андроида:
String hostname = "000.000.000.000";
int port = 0000;
Socket socket = null;
try {
socket = new Socket(InetAddress.getByName(hostname), port);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.start();
серверная часть:
Socket userSocket = socket.accept();
//DataInputStream dis;
dis = new DataInputStream(userSocket.getInputStream());
while(true){
dis.read(buf , 0 , buf.length);
saveBufferToFile(buf);
}
Теперь я сохраняю буфер, используя FileOutStream .write(); метод, но выходной файл вообще не может быть воспроизведен.
после исследования я понимаю, что мне нужно добавить заголовки mp4 в файл, прежде чем я запишу в него данные, НО я не знаю, как это сделать!?
С уважением,