#android #audio #audiotrack
#Android #Аудио #audiotrack
Вопрос:
Я хочу смешать два 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
}
Комментарии:
1. Что вы подразумеваете под микшированием аудиофайла? Означает ли это, что вы хотите наложить один звук на другой или объединить два аудиофайла в один?
2. @AnkushSharma Я хочу наложить один звук поверх другого
3. Привет, действительно хороший вопрос. у вас есть какое-либо решение, потому что у меня такая же проблема.
4. @GanpatKaliya извините, я до сих пор не мог найти никакого решения: (
5. есть какое-нибудь решение, братан?