Bagaimana kami memulihkan file .wav yang rusak

Ada pengalaman menarik ketika file .wav dipulihkan dengan seorang teman. Saya memutuskan untuk menggambarkan proses menyakitkan kami, tiba-tiba seseorang akan berguna.


Latar belakang


Ada cerita sedih ketika perekam membeku / atau memberikan kesalahan saat menyimpan file. Karena itu, ketika kami mencoba membuka file yang rusak, kami mendapatkan kesalahan, seperti: gagal memecahkan kode format , format yang salah, atau program tidak mengenali format file .


Mencoba mengatasinya


Karena kami tidak dapat membuka file, kami memutuskan untuk google. Kami ingin memahami cara memberi makan file .wav ke pemain. Temukan banyak tips: unduh dalam format Raw (mentah), mainkan dengan pengaturan, dll. Semua upaya ini gagal.


Kami memutuskan untuk mempelajari wav secara umum, menemukan info tentang header dan deskripsi mereka:


representasi skematis dari format file wav


Kami memasang hex editor (wxHexEditor), buka dan coba temukan setidaknya sesuatu yang mirip dengan judulnya.


file rusak tanpa header


Kegagalan ... tidak ada.


Kami memutuskan untuk merekam rekor baru dengan simpanan yang berhasil. Kami membukanya di editor dan melihat header.


rekaman normal, tidak ada judul yang dipilih


Salin tajuk dan rekatkan ke file kami yang dipukuli (selanjutnya BF)! Dengan panik menyimpan dan menjalankan file di pemutar, dan tidak ada yang berhasil! (Aku, seperti pria sejati, mulai terisak-isak di sudut ruangan)


Sebelum Anda membangun sesuatu, Anda perlu memecahkan sesuatu.


Kami memutuskan untuk mencari tahu cara memecahkan file normal dan mendapatkan gambar jelek sebagai file yang rusak.


Gambar: BF terpaku di atas, perekaman normal di bawah.


buka dua file dalam audacity


Ternyata jika Anda menghapus 1 byte di hexRedator di file normal dan menyimpan, gambar menjadi serupa. Dan jika Anda mengembalikan byte, bahkan yang kosong diisi dengan nol, maka semuanya menjadi normal.


Menulis skrip bash


Kami memutuskan untuk menghapus dan menyimpan file dengan byte untuk mendapatkan gambar normal, seperti pada gambar di atas. Kami membuat 2 file, satu hanya header, dan yang lainnya file yang rusak (setelah memangkasnya sedikit kurang dari satu megabyte).


Kami menulis skrip kecil yang menghapus satu byte dari file dan menempelkannya bersama dengan header, dan kemudian menyimpannya dengan nomor seri.


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

Kami memulai skrip dan dengan gentar, di ujung bangku, kami menunggu hasilnya. Sayangnya, kami harus melihat file-file ini secara manual, tetapi kami tidak tahu bagaimana melakukannya dengan lebih baik dengan cara lain. Mereka melemparkan 250 file dalam keberanian dan melihat melalui trek:


banyak file yang rusak


Tidak perlu menggulir terlalu lama, karena pada file 537 kami menemukan apa yang kami cari:


ini dia, 537 file dengan suara normal


Itu tetap berlaku untuk kecil. Kami melihat file ini di hash editor di mana ia berhenti. Buka BF di editor dan hapus panjang byte yang diinginkan setelah header. Itu saja, file dua jam diputar secara normal.


PS


Kemungkinan besar, ini bisa dibuat lebih mudah. Siapa yang tahu bagaimana memfasilitasi pekerjaan atau entah bagaimana mengoptimalkannya, menulis, saya akan tambahkan ke "panduan" ini.


Terima kasih atas perhatiannya.

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


All Articles