Android如何将两个音频文件混合到一个音频文件中?

Android如何将两个音频文件混合到一个音频文件中?,android,audio,audiotrack,Android,Audio,Audiotrack,我想将两个mp3文件混合到一个音频文件中(我想将一个音频强加于另一个音频,而不是串联),我搜索了第三个库 但是我找不到。你能帮我找到图书馆吗 我用了这个密码,但我什么也没听到?另外,如何将此新文件保存到设备 下面的代码是: private void mixSound() throws IOException { AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHA

我想将两个mp3文件混合到一个音频文件中(我想将一个音频强加于另一个音频,而不是串联),我搜索了第三个库
但是我找不到。你能帮我找到图书馆吗

我用了这个密码,但我什么也没听到?另外,如何将此新文件保存到设备

下面的代码是:

private void mixSound() throws IOException 
{
    AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, 44100, AudioTrack.MODE_STREAM);
    InputStream in1=getResources().openRawResource(R.raw.naweha);
    InputStream in2=getResources().openRawResource(R.raw.youmat2belna);
    byte[] music1 = null;
    music1= new byte[in1.available()];
    music1=convertStreamToByteArray(in1);
    in1.close();
    InputStream str;

    byte[] music2 = null;
    music2= new byte[in2.available()];
    music2=convertStreamToByteArray(in2);
    in2.close();
    byte[] output = new byte[music1.length];
    audioTrack.play();

    for(int i=0; i < output.length; i++)
    {
        float samplef1 = music1[i] / 128.0f;      //     2^7=128
        float samplef2 = music2[i] / 128.0f;
        float mixed = samplef1 + samplef2;
        // reduce the volume a bit:
        mixed *= 0.8;
        // hard clipping
        if (mixed > 1.0f) mixed = 1.0f;
        if (mixed < -1.0f) mixed = -1.0f;
        byte outputSample = (byte)(mixed * 128.0f);
        output[i] = outputSample;
    }   //for loop
    audioTrack.write(output, 0, output.length);
    audioTrack.play();
}

public static byte[] convertStreamToByteArray(InputStream is) throws IOException 
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] buff = new byte[10240];
    int i = Integer.MAX_VALUE;
    while ((i = is.read(buff, 0, buff.length)) > 0) 
    {
        baos.write(buff, 0, i);
    }
    return baos.toByteArray(); // be sure to close InputStream in calling function
}
private void mixSound()引发IOException
{
AudioTrack AudioTrack=新的AudioTrack(AudioManager.STREAM\u MUSIC,44100,AudioFormat.CHANNEL\u OUT\u立体声,AudioFormat.ENCODING\u PCM\u 16位,44100,AudioTrack.MODE\u STREAM);
InputStreamin1=getResources().openRawResource(R.raw.naweha);
InputStream in2=getResources().openRawResource(R.raw.youmat2belna);
字节[]music1=null;
music1=新字节[in1.available()];
music1=转换流到字节数组(in1);
in1.close();
输入流str;
字节[]music2=null;
music2=新字节[in2.available()];
music2=转换流到字节数组(in2);
in2.close();
字节[]输出=新字节[music1.length];
音轨播放();
for(int i=0;i1.0f)混合=1.0f;
如果(混合<-1.0f)混合=-1.0f;
字节输出样本=(字节)(混合*128.0f);
输出[i]=输出样本;
}//for循环
audioTrack.write(输出,0,输出,长度);
音轨播放();
}
公共静态字节[]convertStreamToByteArray(InputStream is)引发IOException
{
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
字节[]buff=新字节[10240];
int i=整数的最大值;
而((i=is.read(buff,0,buff.length))>0)
{
写入(buff,0,i);
}
return bas.tobyterArray();//请确保在调用函数中关闭InputStream
}

混音音频文件是什么意思?这是不是意味着你想把一个音频强加于另一个音频,还是把两个音频文件连接成一个音频?@Ankushharma我想把一个音频强加于另一个音频。你有什么解决办法吗,因为我也有同样的问题。@GanpatKaliya对不起,到目前为止我找不到任何解决办法:(到目前为止有什么解决办法吗,兄弟?