我正在尝试将从设备收到的字节流保存到Android上的h264文件中。我将bytebuffer设置为30 MB。奇怪的是,当我使用Hex编辑器查看保存文件的内容时,开头只有大约4 MB的数据似乎是合理的。所有其余数据都是0x00。这超出了我的预期,我正在使用Nexus 6p进行测试。
我的代码段。基本上我从回调中接收数据,每次都将它保存到字节缓冲区。当我得到2500个这样的字节数组时,我将它们完全保存到文件中。
private ByteBuffer stream_data = ByteBuffer.allocate(30000000);
...
//Callback function
public void onResult(byte[] videoBuffer, int size){
mDjiGLSurfaceView.setDataToDecoder(videoBuffer, size);
if (count1 <= 2500) {
if (size > 6) {
stream_data.put(Arrays.copyOfRange(videoBuffer, 0, size));
count1++;
}
}
else if (count1 == 2501){
count1++;
new Thread() {
public void run() {
try{
File root = new File(Environment.getExternalStorageDirectory(), "DJI_Data");
if (!root.exists()) {
root.mkdirs();
}
File hola = new File(root, "stream_2500.h264");
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(hola));
bos.write(stream_data.array());
bos.flush();
bos.close();
handler.sendMessage(handler.obtainMessage(SHOWTOAST, "File Saved!"));
stream_data.clear();
stream_data.rewind();
}
catch(Exception e){
e.printStackTrace();
}
}
}.start();
}
}