如何在android.?

时间:2016-01-21 11:56:23

标签: android android-layout android-database

尝试将音频/视频转换为字节数组,反之亦然 使用下面的代码可以将音频/视频文件转换为字节数组(参见下面的代码)但是无法转换大文件(超过50MB文件)是否有任何限制。 如何将字节数组转换为音频/视频文件。请帮助我。

public byte[] convert(String path) throws IOException {

    FileInputStream fis = new FileInputStream(path);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] b = new byte[1024];

    for (int readNum; (readNum = fis.read(b)) != -1;) {
        bos.write(b, 0, readNum);
    }

    byte[] bytes = bos.toByteArray();

    return bytes;
}

请帮助我们获得结果

2 个答案:

答案 0 :(得分:4)

谢谢...在你的帮助下我得到了解决方案,将字节转换为文件(音频/视频),见下面的代码。

private void convertBytesToFile(byte[] bytearray) {
    try {

        File outputFile = File.createTempFile("file", "mp3", getCacheDir());
        outputFile.deleteOnExit();
        FileOutputStream fileoutputstream = new FileOutputStream(tempMp3);
        fileoutputstream.write(bytearray);
        fileoutputstream.close();

    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

** File outputFile = File.createTempFile("file", "mp3", getCacheDir());

outputFile包含路径,用于播放音频/视频文件**

答案 1 :(得分:2)

您创建的ByteArrayOutputStream保留在内存中。如果您使用大文件,那么您的记忆可能会限制您的能力。这个:java.lang.OutOfMemoryError: Java heap space问题有一个可能对你有用的解决方案,尽管将50MB保留在内存中可能不是最好的。

要回答您的其他问题,您可以做同样的事情:

public void convert(byte[] buf, String path) throws IOException {
    ByteArrayInputStream bis = new ByteArrayInputStream(buf);
    FileOutputStream fos = new FileOutputStream(path);
    byte[] b = new byte[1024];

    for (int readNum; (readNum = bis.read(b)) != -1;) {
        fos.write(b, 0, readNum);
    }
}
相关问题