问题描述
我正在尝试将h264格式的字节流保存到h264文件中。 我是用JAVA制作的,正在保存文件,可以打开它并观看视频。 但是,当我尝试在android中使用完全相同的代码,并且试图通过android设备保存文件时,文件已损坏。 这是我的代码(适用于android和java):
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
File file = new File(path,"/" + "filename2.mp4");
FileOutputStream output2 = null;
try {
output2 = new FileOutputStream(file,true);
output2.write(my_stream.toByteArray());
} catch (IOException e) {
e.printstacktrace();
} finally {
try {
output2.close();
} catch (IOException e) {
e.printstacktrace();
}
}
- 当然,路径在Java和android版本中是不同的
解决方法
可能是因为my_stream.toByteArray()只是整个视频的一部分。循环读取视频流,然后逐块将其写入输出流。
或者有此功能可以为您完成:
Files.copy(videoInputStream,filePath,StandardCopyOptions.REPLACE_EXISTING);
或者如果输入是字节数组:
Files.write(outputPath,bytes,StandardOpenOptions.WRITE,StandardOpenOptions.CREATE_NEW,StandardOpenOptions.CREATE);
https://docs.oracle.com/javase/7/docs/api/java/nio/file/StandardOpenOption.html