Trước hết, tôi phải cho bạn biết rằng tôi mới sử dụng Android. Tôi muốn kết hợp hai tệp .wav (tệp âm thanh). Tôi đã googled về nó, nó rất dễ dàng để kết hợp chúng bằng cách sử dụng gói javax nhưng nó không được hỗ trợ trên Android. Bạn có thể cho tôi biết làm thế nào để làm điều này trong Android. Bạn có thể gợi ý cho tôi bất kỳ hướng dẫn hoặc thư viện nào có thể giúp bạn không? Thanx trướcHợp nhất hai hoặc nhiều tệp .wav trong android
Trả lời
Là người mới, người dùng sẽ chỉ đọc byte từ tệp và kết hợp nó với tệp thứ hai !!
Nhưng nó không hoạt động theo cách đó.Bạn phải rất cẩn thận về tiêu đề tập tin sóng trong khi kết hợp hai tập tin.thật tôi có đoạn sẵn sàng với tôi mà sẽ giúp bạn.
Ở đây bạn đi
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 cho đoạn mã. Ý bạn là RECORDER_SAMPLERATE và RECORDER_BPP. Nếu chúng không đổi so với giá trị phải là gì? – Harsh
Giá trị thay đổi theo thiết bị.Nhưng trong trường hợp giá trị của tôi là 44100 và 16 –
Mã của bạn hoạt động tốt Vipul. Tôi có thể nhận được một tập tin đầu ra (tập tin sáp nhập). Thanx để được giúp đỡ – Harsh
- 1. Làm thế nào để concat hoặc hợp nhất hai hoặc nhiều tập tin video trong Android?
- 2. Cách hợp nhất hai hoặc nhiều luồng
- 3. hợp nhất hai tệp
- 4. Cách kết hợp hai hoặc nhiều tệp gzip/luồng
- 5. Tệp âm thanh nhỏ nhất: MP3, Ogg hoặc Wav?
- 6. Tham gia hai tệp WAV từ Java?
- 7. Hợp nhất hai tệp XML trong Java
- 8. Hợp nhất hai byte trong java/android
- 9. Hợp nhất hai bitmap trong android
- 10. Kết hợp hai (hoặc nhiều) PDF
- 11. Sự khác biệt/hợp nhất hai tệp
- 12. Sử dụng AudioTrack trong Android để phát tệp WAV
- 13. Phát các tệp .wav ngắn - Android
- 14. Cách tham gia hai tệp wav bằng python?
- 15. cách lấy mẫu wav từ tệp wav?
- 16. Android - kết hợp hai tệp MP4
- 17. Hợp nhất nhiều tệp .MOBI thành một
- 18. Tải lên tệp WAV bằng Paperclip và lưu trữ cả hai phiên bản .wav và .mp3
- 19. Hợp nhất hai tệp theo một cột trong unix
- 20. Hợp nhất hai tệp trong linux với cột khác nhau
- 21. Hợp nhất hai tệp exe thành một chương trình
- 22. Hợp nhất hai hoặc nhiều dự án studio trực quan vào một dự án
- 23. Android PCM để Ulaw mã hóa tệp wav
- 24. Chuyển đổi tệp .mid sang bất kỳ định dạng âm thanh nào dưới dạng tệp .wav hoặc .mp3 trong android?
- 25. Kết hợp hai hoặc nhiều tệp xls dưới dạng bảng tính PHPExcel
- 26. Hợp nhất nhiều tệp zip vào một tệp zip duy nhất trong Python
- 27. Sử dụng chuyển đổi hoặc mogrify để hợp nhất nhiều tệp PNG thành một tệp TIFF nhiều trang
- 28. Phát tệp WAV lùi
- 29. Có sự hợp nhất GZIP hợp nhất hai tệp GZIP mà không giải nén chúng không?
- 30. cách Hợp nhất hai tệp xml với XSLT
Ý anh là gì bằng cách kết hợp, chính xác? Kết hợp? Lớp phủ? – tomfanning
Ý tôi là Concatenate – Harsh
@tomfanning Xin chào. Bạn có thể giúp chồng chéo hai tệp .wav. – Harsh