Cómo restauramos un archivo .wav dañado

Hubo una experiencia interesante cuando un archivo .wav fue restaurado con un amigo. Decidí describir nuestro proceso doloroso, de repente alguien será útil.


Antecedentes


Hay historias tristes cuando la grabadora se congela o da un error al guardar el archivo. Por lo tanto, cuando intentamos abrir un archivo dañado, obtenemos errores como: el formato no se pudo decodificar, el formato es incorrecto o el programa no reconoció el formato del archivo .


Tratando de resolverlo


Como no pudimos abrir el archivo, decidimos buscar en google. Queríamos entender cómo alimentar el archivo .wav al reproductor. Encontré un montón de consejos: descárguelo en Raw (formato sin formato), juegue con la configuración, etc. Todos estos intentos fracasaron.


Decidimos estudiar qué es wav en general, encontramos la información sobre los encabezados y su descripción :


representación esquemática del formato de archivo wav


Instalamos el editor hexadecimal (wxHexEditor), lo abrimos e intentamos encontrar al menos algo similar al título.


archivo dañado sin encabezado


Fracaso ... no hubo ninguno.


Decidimos grabar un nuevo registro con un guardado exitoso. Lo abrimos en el editor y miramos los encabezados.


grabación normal, sin título seleccionado


¡Copie los encabezados y péguelos en nuestro archivo batido (en adelante BF)! Frenéticamente guarde y ejecute el archivo en el reproductor, ¡y nada funciona! (Yo, como un hombre de verdad, comencé a sollozar en la esquina de la habitación)


Antes de construir algo, necesitas romper algo.


Decidimos descubrir cómo romper un archivo normal y obtener una imagen tan fea como un archivo dañado.


Figura: BF pegado en la parte superior, grabación normal a continuación.


abrir dos archivos en audacia


Resultó que si elimina 1 byte en el hexRedator en un archivo normal y guarda, la imagen se vuelve similar. Y si devuelve un byte, incluso uno vacío lleno de ceros, entonces todo se vuelve normal.


Escribir un script bash


Decidimos eliminar y guardar el archivo por bytes para obtener una imagen normal, como en la figura anterior. Creamos 2 archivos, uno solo los encabezados y el otro un archivo dañado (después de recortarlo un poco menos de un megabyte).


Escribimos un pequeño script que elimina un byte del archivo y lo pega junto con el encabezado, y luego lo guarda con un número de serie.


#!/bin/bash for i in {1..1000} do cat header.wav > "./wav/$i.wav" tail -c +$i raw.wav >> "./wav/$i.wav" done 

Comenzamos el guión y, con temor, al borde del taburete, estamos esperando el resultado. Desafortunadamente, tuvimos que ver estos archivos manualmente, pero no sabíamos cómo hacerlo mejor de otra manera. Lanzaron 250 archivos con audacia y miraron a través de las pistas:


un montón de archivos rotos


No fue necesario desplazarse por mucho tiempo, porque en el archivo 537 encontramos lo que estábamos buscando:


aquí está, archivo 537 con sonido normal


Sigue siendo el caso para los pequeños. Observamos este archivo en el hash del editor donde se detuvo. Abra el BF en el editor y elimine la longitud de byte deseada después del encabezado. Eso es todo, un archivo de dos horas se reproduce normalmente.


PS


Lo más probable es que esto pueda hacerse más fácil. Quién sabe cómo facilitar el trabajo o optimizarlo de alguna manera, escriba, lo agregaré a esta "guía".


Gracias a todos por su atención.

Source: https://habr.com/ru/post/es433178/


All Articles