问题描述
我有一个优化问题。我有一个视频文件(.mp4)加载到我的android程序中。该文件为67兆字节。我想发送此文件,该文件通过串行连接转换为字节数组。波特率是115200 BAUD。我可以很好地收到我的消息,问题是,完全到达对方需要一个小时以上。有没有办法改善下面的代码?
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,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,length);
output[i] = temp;
}
//
return output;
}
我应该注意,就此而言,我在优化或多线程方面经验不足。我的数组块是4096个字节,因为如果我的数据流比它高得多,那么输出流会一直给我indexoutofrangeexception。
感谢您的帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)