简体   繁体   English

如何将Android上的视频录制到Stream中

[英]How to record video on Android into Stream

Android MediaRecorder allows to save video to file (file or socket): Android MediaRecorder允许将视频保存到文件(文件或套接字):

setOutputFile(FileDescriptor fd);
setOutputFile(String path)

How to save videodata to OutputStream? 如何将视频数据保存到OutputStream? It will be used for streaming video recording. 它将用于流式视频录制。

You can do it using ParcelFileDescriptor.fromSocket() : 您可以使用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. 如果您更喜欢UDP,请改用ParcelFileDescriptor.fromDatagramSocket()

Credit where credit is due. 信用到期的信用。

Using Android-specific LocalServerSocket seems to be the only possible way to get video data as stream. 使用特定于Android的LocalServerSocket似乎是将视频数据作为流获取的唯一可能方式。 In brief, you have to: 简而言之,您必须:

  1. create LocalServerSocket instance 创建LocalServerSocket实例
  2. set it as output file to MediaRecorder instance using file descriptor (mediaRecorder.setOutputFile(FileDescriptor fd);) 使用文件描述符将其设置为MediaRecorder实例的输出文件(mediaRecorder.setOutputFile(FileDescriptor fd);)
  3. accept connection 接受连接
  4. read bytes from it (as from InputStream) in separate thread in loop 在单独的线程循环中从它读取字节(从InputStream)

Another ideas? 另一个想法?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM