2014-12-29 79 views
1

如何将两个OGG文件合并到Android(4.0+)中的一个文件中?到目前为止,我在这里发布之前搜索了很多,但我没有发现任何有用的信息。我试图合并两个OGG文件与下面的代码:Android:如何将两个OGG音乐文件合并(加入)到一个?

 File newFile = new File(Environment.getExternalStorageDirectory(), "test.ogg"); 

     Vector<InputStream> inputStreams = new Vector<InputStream>(); 
     for (String path : Globals.mCurrentProject.getSamples()) { 

      inputStreams.add(new FileInputStream(path)); 
     } 

     Enumeration<InputStream> enu = inputStreams.elements(); 
     SequenceInputStream sis = new SequenceInputStream(enu); 

     FileOutputStream fos = new FileOutputStream(newFile); 

     byte[] buf = new byte[8 * 1024]; // or 4 * 1024 

     while (true) { 
      int r = sis.read(buf); 
      if (r == -1) { 
       break; 
      } 
      fos.write(buf, 0, r); 
     } 

     sis.close(); 
     fos.close(); 

但它不是理想的代码。这个例子合并文件,但它没有设置正确的曲目持续时间和歌曲播放等问题(它应该设置歌曲元数据:持续时间,...)

是否有可能以某种方式(以简单的方式)在Android中加入两个(或更多)OGG文件?

在Java中是audioInputStream但它不在Android中。你对这个 问题推荐什么解决方案?也许加入服务器上的文件(发送一些请求并在回答获取文件)?我更喜欢在我的应用程序中执行此操作,但如果它会出现问题,那么可以使用服务器或其他方法。

编辑:

MediaCodec或MediaMuxer可以帮助吗?

回答

0

解决方案:

1)合并使用的SequenceInputStream Ogg文件(如上述)

2)使用FFMPEG Library for Android你OGG转换成MP3

3)一切看起来好作品。但它有点慢:-)

相关问题