У меня проблема с передачей видео на сервер в реальном времени с телефона.то есть, пусть мой телефон будет IP-камерой, и сервер сможет смотреть живое видео с моего телефона
Я нашел много разных решений, но никто не может решить мою проблему.Я использую MediaRecorder для записи.он может правильно сохранить видео файл на SD-карте.затем я сослался на эту страницу и использовал какой-то метод следующим образом
skt = new Socket(InetAddress.getByName(hostname),port);
pfd =ParcelFileDescriptor.fromSocket(skt);
mediaRecorder.setOutputFile(pfd.getFileDescriptor());
теперь кажется, что я могу отправлять видеопоток во время записи
однако я написал приемникпрограмма для приема видеопотока с Android, но она не работает.есть ли ошибка?Я могу получить файл, но не могу открыть видеофайл.Я предполагаю, что проблема может быть вызвана форматом файла?
есть схема моего кода.
на стороне Android
Socket skt = new Socket(hostIP,port);
ParcelFileDescriptor pfd =ParcelFileDescriptor.fromSocket(skt);
....
....
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setOutputFile(pfd.getFileDescriptor());
.....
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
.....
mediaRecorder.start();
на стороне приемника (мой ноутбук ACER)
// anyway , I don't think the file extentions will do any effect
File video = new File (strDate+".3gpp");
FileOutputStream fos;
try {
fos = new FileOutputStream(video);
byte[] data = new byte[1024];
int count =-1;
while( (count = fin.read(data,0,1024) ) !=-1)
{
fos.write(data,0,count);
fos.flush();
}
fos.close();
fin.close();
Я запутался долго .... заранее спасибо