我正在开发一个项目,我需要先将视频转换为字节数组以减小其大小,然后将其转换回视频。
答案 0 :(得分:1)
我不确定您是否会通过将每个字节放入数组来减少视频的大小。
如果我有一个4,000字节的视频,那么你将拥有一个恰好4,000字节的数组(包括数组本身在内存中的所有开销)。
名为ParseFile
的{{1}}对象上有一个方法会返回.getData()
。因此,如果您在byte[] array
列中的Video
课程中存储了视频,则可以执行以下操作:
data
现在你有一个视频对象的字节数组,但是字节数组和视频文件一样大,因为没有发生压缩。如果您想压缩视频文件,可以使用Android的zlib压缩Deflater:
byte[] bytes_of_video = videoObject.getParseFile("data").getBytes();
我不知道您是想节省服务器或设备上的空间,但为了节省带宽成本,您可以将压缩视频数据存储在服务器中的byte[] originalBytes = bytes_of_video;
Deflater deflater = new Deflater();
deflater.setInput(originalBytes);
deflater.finish();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[8192];
while (!deflater.finished()) {
int byteCount = deflater.deflate(buf);
baos.write(buf, 0, byteCount);
}
deflater.end();
byte[] compressedBytes = baos.toByteArray();
对象中,然后解压缩文件当设备准备好被查看/使用时,在设备上。但是设备上的压缩视频文件不是很有用,因为在压缩格式下你无法查看/编辑/使用它。