如何将两个mp3文件合并为一个(组合/连接)

时间:2011-07-18 09:52:40

标签: android audio inputstream

可以说明如何合并/合并两个媒体文件到一个?

我发现了一个关于audioInputStream的主题,但现在它在Android中不受支持,并且所有代码都是java。

在StackOverflow上,我在这里找到了这个链接 但在那里我找不到解决方案 - 这些链接仅适用于流媒体音频。谁能告诉我?

P.S以及为什么我不能开始赏金?:(

2 个答案:

答案 0 :(得分:10)

import java.io.*;
public class TwoFiles
{
    public static void main(String args[]) throws IOException
    {
        FileInputStream fistream1 = new FileInputStream("C:\\Temp\\1.mp3");  // first source file
        FileInputStream fistream2 = new FileInputStream("C:\\Temp\\2.mp3");//second source file
        SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
        FileOutputStream fostream = new FileOutputStream("C:\\Temp\\final.mp3");//destinationfile

        int temp;

        while( ( temp = sistream.read() ) != -1)
        {
            // System.out.print( (char) temp ); // to print at DOS prompt
            fostream.write(temp);   // to write to file
        }
        fostream.close();
        sistream.close();
        fistream1.close();
        fistream2.close();
    }
}

答案 1 :(得分:4)

考虑.mp3个文件的两种情况:

  • 采样频率和通道数相同的文件

在这种情况下,我们可以将第二个文件附加到第一个文件的末尾。这可以使用Android上提供的文件类来实现。

  • 采样频率或频道数不同的文件。

在这种情况下,必须重新编码其中一个剪辑,以确保两个文件具有相同的采样频率和通道数。要做到这一点,我们需要解码MP3,获取PCM样本,处理它以改变采样频率,然后重新编码为MP3。据我所知,android没有转码或重新编码API。一种选择是通过JNI使用像lame / FFMPEG这样的外部库来重新编码。