Android:如何合并(加入)两个OGG音乐文件到一个?

时间:2014-12-29 09:47:18

标签: android audio merge inputstream ogg

如何将两个OGG文件合并到Android(4.0+)中?到目前为止,我在发布之前进行了大量搜索,但我没有找到任何有用的信息。我试图将两个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中。您为此推荐了什么解决方案? 问题?也许在服务器上加入文件(发送一些请求并回答get文件)?我更喜欢在我的应用程序中执行此操作,但如果这是一个问题,可能使用服务器或其他东西。

编辑:

MediaCodec或MediaMuxer可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

解决方案:

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

2)使用FFMPEG Library for Android 将ogg转换为mp3

3)一切看起来都很好并且有效。但它有点慢: - )