Android 优化输出流写入

Android 优化输出流写入,android,stream,outputstream,Android,Stream,Outputstream,我有一个优化问题。我有一个视频文件(.mp4)加载到我的android程序中。这个文件是67兆字节。我想通过串行连接将此文件转换为字节数组。波特率为115200波特。我可以很好地收到我的信息。问题是,完全到达对方需要一个多小时。有没有办法改进我下面的代码 OutputStream out = serverConnection.getOutputStream(); FmiClientConsole.consoleAppendString("video l

我有一个优化问题。我有一个视频文件(.mp4)加载到我的android程序中。这个文件是67兆字节。我想通过串行连接将此文件转换为字节数组。波特率为115200波特。我可以很好地收到我的信息。问题是,完全到达对方需要一个多小时。有没有办法改进我下面的代码

OutputStream out = serverConnection.getOutputStream();
        
        FmiClientConsole.consoleAppendString("video length: " + this.video.length);

        byte[][] byteArrayChunks = createArrayChunk(this.video, 4096);

        int count = 0;
        FmiClientConsole.consoleAppendString("length total: " + byteArrayChunks.length);
        for (byte[] chunk : byteArrayChunks) {
            FmiClientConsole.consoleAppendString("len: " + chunk.length);

            out.write(chunk, 0 , chunk.length);

            FmiClientConsole.consoleAppendString("count: " + count);
            count++;
        }
        out.flush();
创建数组块方法

private static byte[][] createArrayChunk(byte[] array, int chunkSize) {
    int numOfChunks = (int) Math.ceil((double) array.length / chunkSize);
    byte[][] output = new byte[numOfChunks][];

    for (int i = 0; i < numOfChunks; i++) {
        int start = i * chunkSize;
        int length = Math.min(array.length - start, chunkSize);

        byte[] temp = new byte[length];
        System.arraycopy(array, start, temp, 0, length);
        output[i] = temp;
    }

    //
    return output;
}
private static byte[]createArrayChunk(byte[]array,int chunkSize){
int numockhunks=(int)Math.ceil((double)array.length/chunkSize);
字节[][]输出=新字节[numOfChunks][];
for(int i=0;i
我应该注意到,我在优化或多线程方面没有太多经验。我的数组块是4096字节,因为outputstream不断给我一个indexoutofrangeexception,如果我的值远远高于这个值


感谢您的帮助

责怪您的代码对吗?您计算过用115200波特传输67MB字节需要多少时间吗?请告诉我。
this.video
内存中有67MB吗?
byte[]byteArrayChunks=createArrayChunk(this.video,4096)现在你又在内存中放了67MB!!?这看起来不是一个好办法。您可能会遇到内存问题。你一开始不需要这个结构。
非常感谢任何帮助
这就是我告诉你的原因。out.write(this.video);你试过了吗?这个.video是一个67MB的字节数组(一个.mp4文件),据我所知它不会被压缩那么多。尝试一次写入所有文件会导致indexoutofbounds异常,因为outputstream有其限制。