Android MediaRecorder setOutPutFile () для потоковой передачи через Socket - PullRequest
9 голосов
/ 01 марта 2011

Я занимаюсь разработкой приложения для Android, которое должно поддерживать потоковую передачу видео на локальный сервер в моей сети без сохранения его на SD-карте.

Для этого я сделал простое приложение на сокете в C #, которое слушает определенный IP: PORT

В части Android я установил setOutputFile() для этого IP: PORT с помощью сокета.

Это приложение прекрасно запускается на телефоне Android, но оно не отображает предварительный просмотр, и когда я начинаю запись, оно выходит без каких-либо исключений. Он также не отправляет поток данных в сеть.

Когда я устанавливаю setOutPutFile() на SD-карту, она отлично работает и записывает видео.

Для серверной части, когда я отправляю данные из любого другого приложения (с ПК) на тот же IP: PORT, он получает данные.

Короче говоря, я хочу установить канал связи между ПК и Android, используя сокет для потоковой передачи.

Вот мой код Android:

 Socket soc=new Socket("192.168.1.3",8210);
 ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(soc);
 ...
 ...
 // other Recorder setup steps
 ...
 ...
 Recorder.setOutputFile(pfd.getFileDescriptor()); // working fine for sdcard
 Recorder.setPreviewDisplay(holder.getSurface());
 Recorder.prepare();

Вот мое серверное приложение, которое находится на C # и работает на ПК:

 socketForServer = new TcpClient("192.168.1.3", 8210);
 NetworkStream networkStream = socketForServer.GetStream();
 byte[] rData = new byte[1024];
 networkStream.Read(rData, 0, 1024);
 ...
 ...
 // process rData
 ...
 ...

Я не могу понять проблему, которая возникает здесь. Я иду в правильном направлении?

1 Ответ

5 голосов
/ 18 марта 2011

В коде моего сервера возникла проблема.

Мне пришлось использовать TcpListener вместо TcpClient.

Ниже приведен правильный код:

TcpListener listener = new TcpListener(ipAddress, 8210);
Socket s = listener.AcceptSocket();
NetworkStream ns = new NetworkStream(s);
.
.
.
//reading the data from stream
.
.
.
...