2

现在,我正在使用vitamio 库在 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,但没有取得太多成功。

4

1 回答 1

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();

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

于 2016-01-11T16:45:08.827 回答