2012-06-18 14 views
5

Làm cách nào tôi có thể trích xuất thông tin như tỷ lệ mẫu, tốc độ bit, vv từ tệp AMR-NB. Nói đúng, tôi muốn tỷ lệ mẫu hoặc bất kỳ dữ liệu nào khác có thể thay đổi độ cao hoặc nhịp độ của nó.Cách đọc và sửa đổi dữ liệu tệp âm thanh amr?

Thật dễ dàng cho các tập tin WAV nhưng ở đây tôi đang bị hạn chế với định dạng AMR-NB (J2ME Devices)

Tôi đã tìm kiếm rất nhiều trên google nhưng không thể có được bất cứ điều gì về nó ...

AMR-NB có được cố định ở 8Khz không? hoặc nó thay đổi theo từng mẫu?

Trả lời

2

Theo định dạng tệp AMR tại: http://developer.nokia.com/community/wiki/AMR_format tệp AMR có tiêu đề 6 byte, theo sau là một tập hợp các khung âm thanh, mỗi khung có tiêu đề 1 byte. Mỗi khung âm thanh dài 20 ms và có tỷ lệ mẫu được đưa ra trong tiêu đề của mỗi khung hình. để đọc tốc độ lấy mẫu cho khung đầu tiên, bạn cần phải đọc byte thứ 7 trong tệp. Lấy byte thứ 7 và dịch nó sang phải 3 bit và che dấu 4 bit thấp hơn của giá trị mới. Trong java này là "((giá trị >> 3) & 0x0F)" trong đó giá trị là tiêu đề 1 byte cho khung. Sau đó kiểm tra số đó dựa vào bảng bên dưới để xác định tốc độ bit cho khung đó. sau đó vì mỗi khung dài 20ms, bạn cần nhân tốc độ bit (chúng cho nó là kb/s để nhân số đó với 1000 để nhận bit trên giây) 20 và chia cho ((8 bit mỗi byte) * 1000 mili giây cho mỗi thứ hai) = 8000 để lấy số byte để bỏ qua cho tiêu đề khung tiếp theo. Nếu bạn muốn sửa đổi nội dung của khung, chỉ cần recopy các khung theo thứ tự đến một tập tin mới nhưng thay thế khung mới của bạn với một khung cũ. Tệp tạm thời tốt cho điều này.Tôi đã sao chép bảng bitrate tạo thành trang nguồn bên dưới để tham khảo.

0 - AMR 4,75 - Mã hóa tại 4.75kbit/s

1 - AMR 5,15 - Mã hóa tại 5.15kbit/s

2 - AMR 5.9 - Mã hóa tại 5.9kbit/s

3 - AMR 6,7 - Mã hóa tại 6.7kbit/s

4 - AMR 7.4 - Mã hóa tại 7.4kbit/s

5 - AMR 7.95 - Mã hóa tại 7.95kbit/s

01.235.

6 - AMR 10,2 - Mã hóa tại 10.2kbit/s

7 - AMR 12,2 - Mã hóa tại 12.2kbit/s