Android编程复制音频文件(mp3)?

时间:2012-04-08 14:43:47

标签: java android mp3 inputstream outputstream

我正在尝试创建一个mp3文件的副本。这个我需要修剪那个mp3文件。所以使用输入,输出流可以用到这个我猜。可以正常的文本文件类型的复制将能够创建一个可以播放的文件。对java中的文件处理有一定了解的人帮助我。

2 个答案:

答案 0 :(得分:2)

MP3文件是二进制文件。因此,只要您使用二进制文件操作复制MP3,复制就会成功。

但是要修剪MP3文件,您需要了解MP3文件结构。 MP3文件由一系列MP3帧组成。每个帧以MP3标题开头,后跟数据。 MP3帧头包含信息,使用它可以找到帧长度。

有关http://www.id3.org/mp3Frame

的MP3标题的更多详情

因此,只要您以整数帧复制,就应该没问题。否则,解码器将忽略不完整的帧。

答案 1 :(得分:1)

下面的代码是复制mp3文件或其他所有内容的解决方案。我从未经历过修剪部分。但是,我认为通过指定所需的缓冲区数量来修剪文件在逻辑上是可行的。) 实际上 dst 是目录中复制文件的名称。

private void copyFile(String src, String dst) {
    FileInputStream inputStream; // create an input stream
    FileOutputStream outputStream; // create an output stream
    try {
        inputStream = new FileInputStream(src); // create object
        outputStream = openFileOutput(dst, Context.MODE_PRIVATE); // save your file in private mode, which makes it inaccessible by other applications
        int bufferSize;
        byte[] bufffer = new byte[512]; // I think logically here could be useful for trimming the file. I mean just copy an specified part of the file.
        while ((bufferSize = inputStream.read(bufffer)) > 0) {
            outputStream.write(bufffer, 0, bufferSize);
        }
        inputStream.close();
        outputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这是关于如何复制文件的建议,它会将文件复制到应用程序包名称下的内部存储中。此外,我还没有测试过装饰部件。所以,我不确定。

还有一点,您可以通过

获取应用程序的路径目录
getFilesDir();