Вы должны читать mp3 файлы. Для этого вы должны найти спецификации для них.
Обычно mp3-файл заключен в тег ID3, поэтому вам необходимо прочитать его, найти его длину и пропустить. Давайте возьмем ID3v2.3 например:
ID3v2/file identifier "ID3"
ID3v2 version $03 00
ID3v2 flags %abc00000
ID3v2 size 4 * %0xxxxxxx
т. Е. Байты 6,7,8,9 хранят длину заголовка в формате с прямым порядком байтов. Вот пример файла:
0 1 2 3 4 5 6 7 8 9 A B C D E F
49 44 33 03 00 00 00 00 07 76 54 43 4f 4e 00 00
07 76
- это размер. Вам нужно сдвинуть первый байт влево, чтобы фактический размер был 3F6
. Затем добавьте 10 (A), чтобы получить смещение = 400
. Это адрес начала mp3 заголовка.
Затем вы берете описание mp3 заголовка :
биты: AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
, нам нужно FF
, частота дискретизации и преобразование t в фактическую частоту:
bits MPEG1 MPEG2 MPEG2.5
00 44100 22050 11025
01 48000 24000 12000
10 32000 16000 8000
11 reserv. reserv. reserv.