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

4nt*_*ine 12 media android stream mediarecorder

Android MediaRecorder允许将视频保存到文件(文件或套接字):

setOutputFile(FileDescriptor fd);
setOutputFile(String path)
Run Code Online (Sandbox Code Playgroud)

如何将视频数据保存到OutputStream?它将用于流式视频录制.

Fra*_*nov 12

你可以使用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();
Run Code Online (Sandbox Code Playgroud)

如果您更喜欢UDP,请ParcelFileDescriptor.fromDatagramSocket()改用.

信用到期的信用.

  • 我已经设置了一个tcp服务器,每当我这样做时,我在tcp服务器上都没有收到任何东西.我检查了它发送数据的套接字,并且路径也可以正常工作.当我看到日志时,我看到"/ MediaRecorder:启动失败:-38" (2认同)

4nt*_*ine 7

使用特定于Android的LocalServerSocket似乎是将视频数据作为流获取的唯一可能方式.简而言之,您必须:

  1. 创建LocalServerSocket实例
  2. 使用文件描述符将其设置为MediaRecorder实例的输出文件(mediaRecorder.setOutputFile(FileDescriptor fd);)
  3. 接受连接
  4. 在单独的线程循环中从它读取字节(从InputStream)

另一个想法?

  • 提示:这对于新的 Android 版本是不可能的(我猜从 5.x 开始) (2认同)