How to record video on Android into Stream

2020-02-19 11:11发布

Android MediaRecorder allows to save video to file (file or socket):

setOutputFile(FileDescriptor fd);
setOutputFile(String path)

How to save videodata to OutputStream? It will be used for streaming video recording.

2条回答
叛逆
2楼-- · 2020-02-19 11:26

You can do it using 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();

If you prefer UDP, use ParcelFileDescriptor.fromDatagramSocket() instead.

Credit where credit is due.

查看更多
Emotional °昔
3楼-- · 2020-02-19 11:36

Using Android-specific LocalServerSocket seems to be the only possible way to get video data as stream. In brief, you have to:

  1. create LocalServerSocket instance
  2. set it as output file to MediaRecorder instance using file descriptor (mediaRecorder.setOutputFile(FileDescriptor fd);)
  3. accept connection
  4. read bytes from it (as from InputStream) in separate thread in loop

Another ideas?

查看更多
登录 后发表回答