Я занимаюсь разработкой приложения для 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
...
...
Я не могу понять проблему, которая возникает здесь. Я иду в правильном направлении?