繁体   English   中英

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

[英]Android: How merge(join) two OGG music files to one?

如何在Android(4.0+)中将两个OGG文件合并为一个? 到目前为止,我在这里发表文章之前进行了很多搜索,但没有发现任何有用的信息。 我试图用下面的代码合并两个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可以提供帮助吗?

解:

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

2)使用Android的FFMPEG库将ogg转换为mp3

3)一切看起来都很好并且可以正常工作。 但这有点慢:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM