Her şeyden önce size android için yeni olduğumu söylemeliyim. İki .wav (ses dosyası) dosyalarını birleştirmek istiyorum. Ben bu konuda googled, javax paketi kullanarak onları birleştirmek kolay ama android üzerinde desteklenmez. Bunu androidde nasıl yapacağımı söyleyebilir misin? Bana yardımcı olabilecek herhangi bir eğitim veya kütüphane önerebilir misin? Thanx öncedenAndroid'de iki veya daha fazla .wav dosyası birleştirme
cevap
Bir acemi olarak kullanıcı sadece dosyadaki baytları okuyacaktır ve ikinci dosyayla uyuşacaktır !!
Ama bu şekilde çalışmıyor. İki dosya birleştirirken dalga dosya başlığı hakkında çok dikkatli olmanız gerekiyor.Ne yazık ki size yardımcı olacak hazır parçacığım var. İşte
Eğer
private void CombineWaveFile(String file1, String file2) {
FileInputStream in1 = null, in2 = null;
FileOutputStream out = null;
long totalAudioLen = 0;
long totalDataLen = totalAudioLen + 36;
long longSampleRate = RECORDER_SAMPLERATE;
int channels = 2;
long byteRate = RECORDER_BPP * RECORDER_SAMPLERATE * channels/8;
byte[] data = new byte[bufferSize];
try {
in1 = new FileInputStream(file1);
in2 = new FileInputStream(file2);
out = new FileOutputStream(getFilename3());
totalAudioLen = in1.getChannel().size() + in2.getChannel().size();
totalDataLen = totalAudioLen + 36;
WriteWaveFileHeader(out, totalAudioLen, totalDataLen,
longSampleRate, channels, byteRate);
while (in1.read(data) != -1) {
out.write(data);
}
while (in2.read(data) != -1) {
out.write(data);
}
out.close();
in1.close();
in2.close();
Toast.makeText(this, "Done!!", Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void WriteWaveFileHeader(FileOutputStream out, long totalAudioLen,
long totalDataLen, long longSampleRate, int channels, long byteRate)
throws IOException {
byte[] header = new byte[44];
header[0] = 'R';
header[1] = 'I';
header[2] = 'F';
header[3] = 'F';
header[4] = (byte)(totalDataLen & 0xff);
header[5] = (byte)((totalDataLen >> 8) & 0xff);
header[6] = (byte)((totalDataLen >> 16) & 0xff);
header[7] = (byte)((totalDataLen >> 24) & 0xff);
header[8] = 'W';
header[9] = 'A';
header[10] = 'V';
header[11] = 'E';
header[12] = 'f';
header[13] = 'm';
header[14] = 't';
header[15] = ' ';
header[16] = 16;
header[17] = 0;
header[18] = 0;
header[19] = 0;
header[20] = 1;
header[21] = 0;
header[22] = (byte) channels;
header[23] = 0;
header[24] = (byte)(longSampleRate & 0xff);
header[25] = (byte)((longSampleRate >> 8) & 0xff);
header[26] = (byte)((longSampleRate >> 16) & 0xff);
header[27] = (byte)((longSampleRate >> 24) & 0xff);
header[28] = (byte)(byteRate & 0xff);
header[29] = (byte)((byteRate >> 8) & 0xff);
header[30] = (byte)((byteRate >> 16) & 0xff);
header[31] = (byte)((byteRate >> 24) & 0xff);
header[32] = (byte)(2 * 16/8);
header[33] = 0;
header[34] = RECORDER_BPP;
header[35] = 0;
header[36] = 'd';
header[37] = 'a';
header[38] = 't';
header[39] = 'a';
header[40] = (byte)(totalAudioLen & 0xff);
header[41] = (byte)((totalAudioLen >> 8) & 0xff);
header[42] = (byte)((totalAudioLen >> 16) & 0xff);
header[43] = (byte)((totalAudioLen >> 24) & 0xff);
out.write(header, 0, 44);
}
Vipul thanx. RECORDER_SAMPLERATE ve RECORDER_BPP tarafından ne demek istiyorsunuz? Değerler ne olması gerektiğinden daha sabit midir? – Harsh
Değer, cihaza göre değişir.Ama benim durumumda değerler 44100 ve 16 –
kodunuzda çalışıyor Vipul. Bir çıktı dosyası (birleştirilmiş dosya) alabiliyorum. Yardım için Thanx – Harsh
- 1. Birleştirme sırasına göre iki veya daha fazla listeyi birleştirin
- 2. İki veya daha fazla satırda Jqgrid üstbilgileri
- 3. İki (veya daha fazla) DataFrame'i Spark
- 4. python'da wav dosyası bölme
- 5. Java'da wav dosyası okuma
- 6. Java 8 akışları iki veya daha fazla listeden değer katıyor
- 7. İki veya daha fazla arka arkaya hücrelere işaretçi noktası oluşturma
- 8. İki veya daha fazla sayıda seq'den eşzamanlı harita oluşturun
- 9. İki veya daha fazla CSS seçiciyi bir boole durumuyla birleştirin
- 10. ASP.NET 5 İki veya daha fazla ilkeye karşı yetkilendirme
- 11. nasıl Clojure içinde iki veya daha fazla yüklemler oluşturabilirim?
- 12. İki veya daha fazla s ifadesi döndürmek üzere küme makrosu
- 13. JavaFX: Aynı Konumdaki İki veya Daha Fazla Bölme
- 14. İki veya daha fazla ardışık karakter bulmak için RegEx
- 15. Zorlama koşullarında iki veya daha fazla sayıda gidon
- 16. Aynı anda İki (veya Daha Fazla) Fonksiyonu Başlatıyor Android
- 17. Genel liste iki veya daha fazla değerde sırala
- 18. WAV dosyası M4A'ya nasıl dönüştürülür?
- 19. daha fazla özellik veya sonsuz sayfalama yükleme
- 20. Java - Check for: Bir veya daha fazla whitespaces, karakter, bir veya daha fazla whitepace
- 21. Android - sözlük dosyası. Daha hızlı, veritabanı veya okuma dosyası hangisidir?
- 22. C# İki SortedLists (Birleştirme?)
- 23. Daha fazla oku android'de daha fazla buton
- 24. Birleştirme iki QMenuBar
- 25. jquery daha fazla veya daha az ile tam dizgi bul
- 26. İki UIImages'yi birleştirme
- 27. İki Linq İfadesini Birleştirme
- 28. MongoDB'de iki koleksiyon birleştirme
- 29. Paperclip ile WAV dosyası yükleyin ve hem .wav ve .mp3 sürümlerini
- 30. 1 Spec.js dosyasında 2 veya daha fazla JavaScript dosyasını sınama?
birleştirmek tarafından tam olarak ne demek oluyor gitmek? Concatenate? Kaplama? – tomfanning
Yani birleştirmek – Harsh
@tomfanning Merhaba. İki .wav dosyasının üstesinden gelmek için yardımcı olabilir misiniz. Snippet için – Harsh