2016-03-05 4 views
3

Я пишу программу для чтения и обработки WAV-файлов для проекта класса цифровой обработки сигналов, и у меня есть два тестовых файла. Я могу прочитать RIFF, fmt и data штук правильно. Оба файла имеют fmt Chunk Size: 16, но файл B имеет этот бродячий кусок гексагона между кусочками fmt и data.Какие еще суб-куски файлов WAV?

Я уверен, что это не случайные данные. Я предположил, что у него есть некоторые метаданные о файле, поэтому я преобразовал его название песни Colors в hex и нашел, что 43 6f 6c 6f 72 73 находится в пределах этого бродячего куска. Я чувствую, что это не совпадение. На всех сайтах, которые я посещал, упоминается только о двухбайтовой переменной, которая сообщает размер дополнительных параметров в конце фрагмента fmt. Это не может быть в случае файла B, если оба блока fmt претендуют только на 16 bytes.

Я предполагаю, что в файле есть другие куски. Я ничего не нашел об этих необязательных (?) Кусках. Мне нужна помощь, чтобы узнать, какие еще суб-куски я могу найти в wav-файле. Я просто не знаю теги других блоков, которые могут присутствовать в WAV файл


Файл A («я бежал так далеко away.wav») содержит этот заголовок. Я загрузил этот файл из Интернета.

5249 4646 24c0 c900 5741 5645 666d 7420 
1000 0000 0100 0100 2256 0000 44ac 0000 
0200 1000 6461 7461 00c0 c900 

Файл B ("Colors.wav") содержит этот заголовок. Это файл, который я загрузил из .mp3 в .wav-конвертер.

5249 4646 7c32 4a02 5741 5645 666d 7420 
1000 0000 0100 0200 44ac 0000 10b1 0200 
0400 1000 4c49 5354 5000 0000 494e 464f 
4941 5254 0500 0000 466c 6f77 0000 494e 
414d 0700 0000 436f 6c6f 7273 0000 4950 
5244 0f00 0000 436f 6465 2047 6561 7373 
204f 5031 0000 4953 4654 0e00 0000 4c61 
7666 3537 2e32 362e 3130 3000 6461 7461 
0032 4a02 

Если это полезно, ниже выводится из программы, которую я написал.

File A 
     File Descriptor: RIFF 
     RIFF Chunk Size: 13221924 
      File Format: WAVE 

    fmt Chunk Descriptor: fmt 
      fmt Chunk Size: 16 
      Audio Format: 1 
     Number of Channels: 1 
      Sampling Rate: 22050 
       Byte Rate: 44100 
      Block Align: 2 
     Bits Per Sample: 16 

    Data Chunk Descriptor: data 
     Data Chunk Size: 13221888 

File B 
     File Descriptor: RIFF 
     RIFF Chunk Size: 38417020 
      File Format: WAVE 

    fmt Chunk Descriptor: fmt 
      fmt Chunk Size: 16 
      Audio Format: 1 
     Number of Channels: 2 
      Sampling Rate: 44100 
       Byte Rate: 176400 
      Block Align: 4 
     Bits Per Sample: 16 

    Data Chunk Descriptor: data 
     Data Chunk Size: 38416896 

ответ

3

рифф спецификация файла позволяет для любого куска ид программа хочет с оговоркой, что это может противоречить с другой программой, если тот же кусок идентификатор используется для различных целей. При написании программы для работы с файлами RIFF NOT требуется, чтобы вы могли понимать каждый тип блока, потому что это было бы невозможно. Вы должны, однако, написать своего читателя таким образом, чтобы он мог пропустить непризнанную идентификаторы кусков.

Файл, на который вы смотрите, имеет предопределенный и необязательный фрагмент «INFO». Если сбросить ASCII из шестнадцатеричных вы публикуемых вы найдете:

INFO 
    IART Flow 
    INAM Colors 
    IPRD Code Geass OP1 
    ISFT Lavf57.26.100 

Этого кусок идентификатор покрыт на странице википедии для RIFF - https://en.wikipedia.org/wiki/Resource_Interchange_File_Format#Use_of_the_INFO_chunk

или здесь http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info

и это также описанные в спецификации RIFF. Извините, у меня нет ссылки.

+0

Я попытался преобразовать гекс в ascii и нашел этот кусок 'LIST P'. Как бы то ни было, знаете ли вы, что это значит, или это пренебрежимо мало, как «ИНФО»? – Nogurenn

 Смежные вопросы

  • Нет связанных вопросов^_^