【问题标题】:Android programming copy an audio file(mp3)?Android编程复制音频文件(mp3)?
【发布时间】:2012-04-08 14:43:47
【问题描述】:

我正在尝试创建一个 mp3 文件的副本。这个我需要修剪那个 mp3 文件。所以使用输入,输出流可以用于这个我猜。可以复制的普通文本文件类型将能够创建一个可以播放的文件。熟悉java文件处理的人可以帮助我。

【问题讨论】:

    标签: java android mp3 inputstream outputstream


    【解决方案1】:

    MP3 文件是二进制文件。所以只要你使用二进制文件操作复制MP3,复制就会成功。

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

    http://www.id3.org/mp3Framehttp://www.id3.org/mp3Frame了解更多关于 MP3 标头的详细信息

    因此,只要您以整数帧进行复制,就可以了。即便如此,解码器也会忽略不完整的帧。

    【讨论】:

      【解决方案2】:

      以下代码是复制 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();
      

      【讨论】:

        猜你喜欢
        • 2020-03-31
        • 2014-05-31
        • 2014-06-30
        • 1970-01-01
        • 1970-01-01
        • 2012-10-23
        • 1970-01-01
        • 2011-06-19
        • 2011-07-19
        相关资源
        最近更新 更多