Как записывать видео на Android в Stream
Android MediaRecorder позволяет сохранять видео в файл (файл или сокет):
setOutputFile(FileDescriptor fd);
setOutputFile(String path)
Как сохранить видеоданные в OutputStream? Он будет использоваться для потоковой видеозаписи.
Ответы
Ответ 1
Использование для Android LocalServerSocket кажется единственным возможным способ получения видеоданных в виде потока. Вкратце, вы должны:
- создать экземпляр LocalServerSocket
- установите его как выходной файл в экземпляр MediaRecorder, используя дескриптор файла (mediaRecorder.setOutputFile(FileDescriptor fd);)
- принять соединение
- читать байты из него (как из InputStream) в отдельном потоке в цикле
Другие идеи?
Ответ 2
Вы можете сделать это, используя ParcelFileDescriptor.fromSocket()
:
String hostname = "example.com";
int port = 1234;
Socket socket = new Socket(InetAddress.getByName(hostname), port);
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
MediaRecorder recorder = new MediaRecorder();
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.prepare();
recorder.start();
Если вы предпочитаете UDP, используйте ParcelFileDescriptor.fromDatagramSocket()
.
Кредит, в котором должен быть предоставлен кредит.