Главная » Софт » [Из песочницы] Как мы восстанавливали поврежденный .wav файл

[Из песочницы] Как мы восстанавливали поврежденный .wav файл

Я решил описать наш мучительный процесс, вдруг кому-то пригодится. Был интересный опыт, когда с другом восстанавливали .wav файл.

Предыстория

Следовательно, при попытке открыть поврежденный файл мы получаем ошибки, типа: не удалось декодировать формат, неверный формат или программа не распознала формат файла. Бывают грустные истории, когда диктофон зависает/или выдает ошибку при сохранении файла.

Пытаемся разобраться

Мы хотели понять, как скормить .wav файл проигрывателю. Так как открыть файл у нас не получилось, решили по гуглить. Все эти попытки потерпели фиаско. Нашли кучу советов: загрузить его в Raw(сыром формате), поиграться с настройками и т.д.

Решили изучить, что такое вообще wav, нашли инфу про заголовки и их описание:

схематическое представление формата wav файла

Устанавливаем хекс редактор (wxHexEditor), открываем и пытаемся хоть что-то найти похожее на заголовок.

поврежденный файл без заголовка

Провал… их не было.

Открыли его в редакторе и смотрим заголовки. Решили записать новую запись с удачным сохранением.

нормальная запись, заголовок не выделен

Судорожно сохраняем и запускаем файл в проигрывателе, и ничего не работает! Копируем заголовки и вставляем в наш битый файл (далее БФ)! (Я, как настоящий мужик, начал рыдать в углу комнаты)

Перед тем как что-то построить, нужно что-то сломать.

Мы решили разобраться, как можно сломать нормальный файл и получить такую уродскую картину, как поврежденный файл.

Рисунок: сверху склеенный БФ, внизу нормальная запись.

открытые два файла в audacity

А если вернуть байт, даже пустой забитый нулями, то все становится нормально. Оказалось что, если удалить в хексРедаторе 1 байт в нормальном файле и сохранить, картина становится похожей.

Написание баш скрипта

Создали 2 файла, один только заголовки, а другой поврежденный файл (предварительно его обрезав чуть меньше мегабайта). Решили побайтово удалять и сохранять файл, чтобы получить нормальную картину, как на рисунке выше.

Написали небольшой скрипт, который удаляет один байт из файла и склеивает с заголовком, после чего сохраняет с порядковым номером.

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

К сожалению, нам пришлось просматривать эти файлы вручную, но как лучше сделать по другому мы не знали. Запускаем скрипт и с трепетом, на краешке стульчика, ждем результат. Закидывали по 250 файлов в audacity и просматривали дорожки:

куча битых фалов

Скроллить пришлось недолго, потому что на 537 файле мы нашли, то что искали:

вот он, 537 файл с нормальным звуком

Смотрим этот файл в хеш редаторе, где он остановился. Осталось дело за малым. Вот и все, двухчасовой файл нормально воспроизводится. Открываем БФ в редакторе и удаляем после заголовка нужную нам длину байтов.

P.S.

Кто знает, как облегчить работу или как-то ее оптимизировать, пишите, добавлю в этот "гайд". Скорее всего, это можно было сделать проще.

Всем спасибо за внимание.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Из песочницы] Как создать игру, если ты ни разу не художник

В жизни каждого программиста бывали моменты, когда он мечтал сделать интересную игру. Многие программисты эти мечты реализовывают, и даже успешно, но речь сейчас не о них. Речь о тех, кто любит играть в игры, кто (даже не имея знаний и ...

Киберпреступники пять месяцев контролировали ASUS Live Update

Злоумышленники разместили на сервере вредоносный файл с бэкдором, подписанный валидным сертификатом ASUS. Как сообщает «Лаборатория Касперского», хакеры из APT-группировки ShadowHammer 5 месяцев контролировали сервис обновлений ASUS Live Update и заразили более полумиллиона компьютеров по всему миру.Исследователи из «Лаборатории Касперского» обнаружили, ...