2012-06-18 16 views
5

Jak mogę wyodrębnić informacje takie jak częstotliwość próbkowania, przepływność itp. Z pliku AMR-NB. Ściśle mówiąc chcę częstotliwości próbkowania lub innych danych, które mogą zmienić jego wysokość lub tempo.Jak odczytać i zmodyfikować dane pliku audio AMR?

To było łatwe do plików WAV, ale tutaj jestem ograniczony w formacie AMR-NB (urządzenia J2ME)

Szukałem dużo na google, ale nie można dostać nic na to ...

czy AMR-NB jest ustawiony na 8KHz? lub zmienia się w przypadku każdej próbki?

Odpowiedz

2

Zgodnie z formatem pliku AMR pod adresem: http://developer.nokia.com/community/wiki/AMR_format Pliki AMR mają nagłówek 6-bajtowy, a po nim zestaw ramek audio, z których każdy ma nagłówek 1-bajtowy. Każda ramka audio ma 20 ms długości i częstotliwość próbkowania jest podana w nagłówku każdej ramki. aby odczytać częstotliwość próbkowania pierwszej klatki, należy przeczytać 7. bajt w pliku. Weź 7 bajt i przesuń go w prawo o 3 bity, i zamaskuj 4 bity nowej wartości. W języku Java jest to "((wartość >> 3) & 0x0F)" gdzie wartość jest 1-bajtowym nagłówkiem dla ramki. Następnie sprawdź tę liczbę w tabeli poniżej, aby określić przepływność dla tej ramki. potem, ponieważ każda klatka ma 20ms długości, musisz pomnożyć szybkość transmisji (dają ją jako kb/s, więc pomnóż tę liczbę przez 1000, aby uzyskać bity na sekundę) o 20 i podziel przez ((8 bitów na bajt) * 1000ms na drugi) = 8000, aby uzyskać liczbę bajtów do pominięcia dla następnego nagłówka ramki. Jeśli chcesz zmodyfikować zawartość ramki, po prostu przeskocz ponownie klatki do nowego pliku, ale zastąp nową klatkę starym. Odpowiedni jest plik tymczasowy. Kopiowałem tabelę bitrate z poniższej strony źródłowej w celach informacyjnych.

0 - AMR 4,75 - koduje 4.75kbit/S

1 - AMR 5,15 - koduje 5.15kbit/S

2 - AMR 5,9 - koduje 5.9kbit/S

3 - AMR 6.7 - koduje 6.7kbit/s

4 - AMR 7.4 - koduje 7.4kbit/s

5 - AMR 7,95 - koduje 7.95kbit/s

6 - AMR 10.2 - koduje 10.2kbit/S

7 - AMR 12.2 - koduje 12.2kbit/S

Powiązane problemy