こんにちは、私はこれで多くの問題を抱えています.2つのファイルがあり、どちらもMp4形式で、それらをFileInputStreamsに読み込み、次にByteArrayOutputStreamsに読み込みます。次に、別の ByteArrayOutputStream [finalOutputStream] を使用して 2 つのバイト配列を追加し、2 つを write() しようとします。最後に、FileOutputStream を使用して write(finalOutputStream.toByteArray())、フラッシュ、クローズします。携帯電話でビデオを探すと、2 つのビデオを結合した「最終」ビデオがあり、2 つの部分のサイズを合わせたようなサイズになっています..しかし、ビデオを見ると、 2 番目の部分 --- ... 2 番目の部分が最初の部分を上書きするようなものですが、どういうわけかサイズが大きくなりますか?... いくつかのコードがあります..
File fileOne = new File(fileLongName);
File fileTwo = new File(mediaStorageDir.getPath() + File.separator +"VID_TUTPART_"+ (foo-1) + ".mp4");
FileInputStream fisOne = new FileInputStream(fileOne);
FileInputStream fisTwo = new FileInputStream(fileTwo);
int bufferSize = 1024;
//FileOne
byte[] buffer = new byte[bufferSize];
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
//FileTwo
byte[] bufferTwo = new byte[bufferSize];
ByteArrayOutputStream byteBufferTwo = new ByteArrayOutputStream();
int len = 0;
//FileOne to bytebuffer
while ((len = fisOne.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
//FileTwo to bytebuffer
while ((len = fisTwo.read(bufferTwo)) != -1) {
byteBufferTwo.write(buffer, 0, len);
}
byte[] byteArrayOne = byteBuffer.toByteArray();
byte[] byteArrayTwo = byteBuffer.toByteArray();
ByteArrayOutputStream finalOutputStream = new ByteArrayOutputStream( );
finalOutputStream.write( byteArrayOne );
finalOutputStream.write( byteArrayTwo );
int counterFileNumber = 0;
while(new File(mediaStorageDir.getPath() + File.separator +"VID_TO_TUTFIN_"+ counterFileNumber + ".mp4").exists()){
counterFileNumber++;
}
String outputFileNameString = mediaStorageDir.getPath() + File.separator +"VID_TO_TUTFIN_"+ counterFileNumber + ".mp4";
File outputFile = new File(outputFileNameString);
FileOutputStream fos = new FileOutputStream(outputFile);
fos.write(finalOutputStream.toByteArray());
fos.flush();
fos.close();