如何使用 Android Java 录制直播?
How can I record a live stream with Android Java?
现在我正在使用 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,但没有取得多大成功。
为什么不使用数据输入流:
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();
然后,您可以播放文件中的视频。
现在我正在使用 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,但没有取得多大成功。
为什么不使用数据输入流:
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();
然后,您可以播放文件中的视频。