将字节数组写入Android上的文件不起作用

时间:2016-01-22 12:03:10

标签: java android file io byte

我正在尝试将从设备收到的字节流保存到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();
            }
        }

0 个答案:

没有答案