2013-04-17

Recuperando el Header de un WAV

Mi compañero Daniel necesitaba urgentemente poder escuchar un archivo WAV que con ningún reproductor funcionaba, ni con VLC que he visto que reproduce lo que sea. Por lo que le dije que me lo pasara y que me pasara otro que hubieran generado de la misma forma que ese que estaba dañado.

Cuando abrí el archivo con el comando hexedit encontré que la cabecera de dicho archivo estaba todo en ceros como pueden ver a continuación



Por lo que en Internet busque como era el Header de este tipo de archivos y de cuantos Bytes lo componía  donde encontré este excelente post que indicaba justamente lo que necesitaba y que copia a continuación

The Road Map:
HEX |DESCRIPTION
0000 |RIFF (in plain ASCII text)
0004 |Length of the entire file as a 32-bit unsigned integer
0008 |WAVE (in plain ASCII text)
000C |fmt[] (fmt[] in ASCII text denotes subchunk)
0010 |subchunk1size as a 32-bit unsigned integer
0032 |audio format 1=PCM
0016 |# of channels 1=1 2=2 (you can figure that out right?!)
0018 |Sample Rate!
001C |Byte Rate
0020 |Block Align
0022 |Bits/Sample
0024 |data (in plain ASCII text start of data subchunk)
0028 |Subchunk2Size
002C |First Sample (Left if 0016 = 2)
002E |Second Sample (Right if 0016 = 2)
REST OF DATA

Este es el significado y uso de cada uno de los Bytes del Header de un archivo tipo WAV, por lo que ya teniendo esto y teniendo el otro archivo que si funcionaba, tome con el hexedit y modifique la cabecera así


Y ya con eso lo salve en un archivo y revise el tipo de archivo que se identifica en el sistema así


Como pueden apreciar ya se veía correctamente la información de la cabecera así que se probo con VLC y se pudo escuchar la grabación.