破損した.wavファイルを復元した方法

友人と一緒に.wavファイルを復元するときに興味深い経験がありました。 痛みを伴うプロセスを説明することにしました。突然誰かが役に立つでしょう。







背景



レコーダーがフリーズする/またはファイルの保存中にエラーが発生するという悲しい話があります。 したがって、破損したファイルを開こうとすると、次のようなエラーが表示されます形式のデコードに失敗した、形式正しくないプログラムがファイル形式を認識しなかったなど







それを理解しよう



ファイルを開くことができなかったため、Googleを使用することにしました。 .wavファイルをプレーヤーにフィードする方法を理解したかったのです。 たくさんのヒントを見つけました:Raw(raw形式)でダウンロードする、設定を試すなど これらの試みはすべて失敗しました。







私たちはwavが一般的に何であるかを研究することに決め、ヘッダーとその説明に関する情報を見つけました:







wavファイル形式の概略図







16進エディター(wxHexEditor)をインストールし、開いて少なくともタイトルに似たものを見つけようとします。







ヘッダーのない破損したファイル







失敗...何もありませんでした。







保存に成功した新しいレコードを記録することにしました。 エディターでそれを開き、ヘッダーを確認しました。







通常の録音、タイトルが選択されていません







ヘッダーをコピーして、Beatnファイル(以降、BF)に貼り付けます! プレーヤーでファイルを必死に保存して実行しても、何も機能しません! (私は、本物の男のように、部屋の隅ですすり泣き始めました)







何かを構築する前に、何かを壊す必要があります。



通常のファイルを破壊し、破損したファイルのようなdamagedい画像を取得する方法を見つけることにしました。







図:上に接着されたBF、下に通常の録音。







audacityで2つのファイルを開きます







通常のファイルのhexRedatorで1バイトを削除して保存すると、画像が似たものになることが判明しました。 そして、ゼロを埋めた空のバイトでさえ、バイトを返すと、すべてが正常になります。







bashスクリプトを書く



上図のように、通常の画像を取得するために、ファイルをバイト単位で削除して保存することにしました。 2つのファイルを作成しました。1つはヘッダーのみ、もう1つは破損したファイルです(1メガバイト弱にトリミングした後)。







ファイルから1バイトを削除し、ヘッダーと一緒に貼り付けて、シリアル番号で保存する小さなスクリプトを作成しました。







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





スクリプトを実行し、スツールの端で恐怖を抱いて、結果を待っています。 残念ながら、これらのファイルを手動で表示する必要がありましたが、別の方法でそれを改善する方法がわかりませんでした。 彼らは250個のファイルを大胆に投げ、トラックを調べました。







壊れたファイルの束







537ファイルで探しているものが見つかったため、長くスクロールする必要はありませんでした。







ここでは、通常のサウンドの537ファイルです







小規模の場合はそのままです。 停止したエディターのハッシュでこのファイルを確認します。 エディターでBFを開き、ヘッダーの後に必要なバイト長を削除します。 それだけで、2時間のファイルは通常通り再生されます。







PS



ほとんどの場合、これは簡単にできます。 作業を容易にする方法、または何らかの方法で最適化する方法を知っている人は、この「ガイド」に追加します。







ご清聴ありがとうございました。








All Articles