如何使用Android Java录制实时流?

时间:2016-01-11 16:26:41

标签: java android tcp vitamio mp4parser

现在我正在使用vitamio librairy在Surface上显示实时流。

我希望将其录制,以便稍后观看,因为饲料来自无人机。

现在我定期使用jcodec保存一系列位图:

 SequenceEncoder enc = new SequenceEncoder(new File("filename"));
// GOP size will be supported in 0.2
// enc.getEncoder().setKeyInterval(25);
for(...) {
    BufferedImage image = ... // Obtain an image to encode
    enc.encodeImage(image);
}
enc.finish();

我的问题是:

  • jcodec的h264输出已损坏(帧上有很多色块)
  • 我无法以很高的帧速率录制(我喜欢30fps)。

此外,我仍然需要找到一种方法来复用它。我没有太多成功地调查了Mp4Parser。

1 个答案:

答案 0 :(得分:1)

为什么不使用数据输入流:

DataInputStream in = new DataInputStream (recording.getInputStream());
FileOutputStream videoFile = new FileOutputStream(targetFile);
int len;
byte buffer[] = new byte[8192];

while((len = in.read(buffer)) != -1) {
    videoFile.write(buffer, 0, len);
}

videoFile.close();

然后,您可以播放文件中的视频。