Düşnüksiz wakalaryň bir topary, RIFF faýllarynyň ikili kodlamasyna we bu maglumatlary dikeltmek guralyna nädip syýahat edýär?
Eger gyssanýan bolsaňyz, göni GitHub ammaryna gidiň.
Döwrebap kompaniýalar üçin programma üpjünçiligini döretmek bagtyna garamazdan, elmydama buýsanç bilen geýýän nyşanym "printer ýigidi" boldum.
Mümkin, şonuň üçinem çärýek asyrdan gowrak wagt bäri adamlar halas ediş serişdeleri bilen ýüz tutýarlar. Hiç haçan hünär taýdan etmedim, bu diňe meniň göwnüme ýaraýan zat we köplenç kömek edip bilýärin.
Esasy çemeleşişim iki esse:
ölýän serişdeden näme edip biljekdigiňizi ele alyň
maglumatlary döretmäge synanyşyň
Käwagt, diňe okamaga çydamlylygy sazlamak bilen, Windows ýa-da Mac ret edýän diskden hemme zady alyp bilersiňiz, sebäbi OS ölýän serişdäniň jogap bermeginden has tiz bolýar. 7 aý bäri bir gutuda bir disk bar; 100% dikeldiş üstünligi!
Kämahal, bir topar maglumat ýitirim bolar, ýöne Faýl paýlanyş tablisasy / Ussat faýl tablisasy / konteýner superblok / kök B agajy henizem bar, şonuň üçin maglumatlaryň köpüsi faýl atlary we agaç ýerleşişi bilen halas edilip bilner.
Iň soňunda bolsa, käbir çig mallardan başga zat galmady. Siziň edip biljek zadyňyz, ony oýmak - esasan her baýtdan ortaça okamak, JPG ( FF D8
) ýa-da MKV ( 1A 45 DF A3
) ýaly belli sözbaşylary kesgitlemek we faýlyň ahyryna çenli ähli yzygiderli maglumatlary ele almak. Haýsydyr bir sebäbe görä, faýl böleklere bölünen bolsa, oýmak hökman şowsuz bolar.
Frankie, bu öň beýle bolmandy, umuman seresap bolýaryn ... Näme pikir edýändigimi bilemok - tutuş bir sessiýa üçin sesli SD kartany tötänleýin formatladym. Iň erbet tarapy, men käbir faýllary ýatda sakladym!
Pýer ajaýyp zehinli komediýa we adatdan daşary aktýor. Işi köptaraply bolsa-da, köçe eskizleri bilen giňden tanaldy, käbiri düýbünden uniwersal. Aşakdaky birini barlaň, ol ýerde "Bagyşlaň" diýýär.
Bu eskiziň ýönekeýligi we gülkünç özüne çekijiligi ýeňil, ýöne hemmeler üçin özüne çekiji sungat eserini döredýär.
Şol ýönekeý hereket bilen Pýer kluba goşuldy. Hemmeler bulaşýarlar. Hatda Pixar . Alada etme, kartoçkany alanymda, ýazylan mazmun ýok boldy, ýöne mikrofon görnüşli kartoçkadygyny göz öňünde tutsak, hatda FAT tablisasy bolmasa-da, maglumatlaryň yzygiderli bolmagy mümkin.
Bilmedim, bu biraz wagtyň içinde işlän iň gyzykly oýunjak taslamalarymyň biri bolar. Iň soňky gezek gaty gyzykly bolanymda, ' Os Azeitonas ' albomynyň ussatlaryny öz içine alýan RAID-0 enjamyny täzeden gurmak.
Garaşylyşy ýaly, maglumatlary yzyna almagyň ýeke-täk usuly ony şekil zibilhanasyndan oýmakdy. Saýlamak üçin köp sanly gural bar, Photorec (açyk çeşme), Recuva (bukja programmalaryna seresap boluň), ReclaiMe (tölegli) we ş.m. ... R-Studio -a bölekleýin bolsam-da (tölegli); netijeleri yzygiderli bäsdeşlikden öňe geçýär.
Şeýle ýagdaýda, ýagdaý beýle bir ýönekeý bolmazdy. Synag edilen her bir programma üpjünçiligi wav
faýllaryny çykaryp bilýärdi, ýöne maglumatlarda nädogry bir ýalňyşlyk bardy, sebäbi bularyň hemmesiniň gaýtalanmagy, dürli görnüşleri bar.
Men eşitmekden birneme samsyk, şonuň üçin nämäniň bolup geçýändigini barlamak üçin Audacity -da açdym. Bir nagşy şu ýerde aýdyň görüp bilersiňiz:
Bölümler gaty meňzeş tolkun formasyna eýe bolsa-da, ikitaraplaýyn baglanyşyk ýok. Mundan başga-da, bir nägilelik bar, her bir wav
faýlynda yzygiderli 2 sözbaşy bar ýalydy.
Youadyňyzda saklaň, şu wagt wav
faýllary baradaky sözbaşymyň sözbaşy 52 49 46 46
. Mikrofondan peýdalanmakdan başga-da, Pýerden maglumatlary nädip ýazga alandygyny soramadym. Şeýle-de bolsa, sözbaşydaky "ZOOM M3" belligini görenimde, sesleriň hemmesine ygtyýar berdim.
Ed bu ömrüniň has gowy döwri üçin tizlik bilen aýlanýar. Men şunuň ýaly bagtly. Ynanyp bolmajak kompozitor bolmakdan başga-da, haýran galdyryjy Iň gowy ýaşlygy diňläň - ol şeýle hem ajaýyp, janly we dem alýan, ses ensiklopediýasy.
Ulaltmak? Hawa, hawa. Mende bar. Waw we çig hem ýazýarlar. Maglumatlar ýalňyşmy? Ah. Elbetde. Dikeldiňmi? Bükülen faýllar? Bu mümkin däl mesele bolar we bolmasa-da, diňe ýazga almak has aňsat bolar.
Ol ýerde meni aldy. Diňe täzeden ýazga almak has aňsat bolar, hatda Pýer hem bir gezek ses çykarmagy teklip edipdi, ýöne hezil nirede bolar?
Ed düşündirýänçä raw
tolkun düşünjesine-de baha bermedim, ýöne mikrofonyň bir wagtyň özünde iki faýly tygşytlaýandygyny bildim, hemme zat ýerbe-ýer boldy.
Sanly kameralaryň iki formaty hem saklamagy adaty zat, ýöne mikrofon başga haýwan. Ulanyjynyň näçe wagt ýazjakdygyny öňünden kesgitläp bolmaz, bu ýekeje akym bolsa mesele bolmaz. Iki ýoly hem saklaýanlygy sebäpli, birneme has köp oýun oýnaýar.
Görýäňizmi, ýazga giren badyňyza mikrofon iki faýl döredýär we alnan maglumatlary ikisinden hem kartoçka yzygiderli geçirýär. Bu maglumatlaryň bir böleginde edilýär. Biri RAW üçin, beýlekisi WAV üçin gaýtalaň.
Maglumatlaryň böleklerini aýyrmak üçin izolýasiýa etmeli bolanymyz üçin, olaryň takyk ululygyny bilmelidiris . Jadyly belgimiz bar!
Ilkinji pikirim, bölekleriň exFAT
paýlaýyş birliginiň ululygyna laýyk bolmagy mümkin. Bu ýagdaýda 128 KBytes
. Synag edeliň.
Sözbaşy, bu bir kanalda 32 bitde ýazylan, sekuntda 48k gezek nusga alnan stereo faýlyň (2 kanal) açyk görkezýär. Aboveokardaky suratdan ýadyňyzda bolsa, bölekler takmynan 0,7 sekuntda gaýtalanýar.
Şar meýdançasyny bilmek üçin bölek baýtlara takmynan ýakynlaşalyň.
1 second of data = 2 channels * 32 bits * 48000 samples 1 second of data = 384000 bytes 0.7 seconds ~ 268800 bytes
268 KBaýt töweregi böleklere göz aýlaýarys.
Edil şonuň ýaly, 128 Kbaýtlyk AFAT AUS-a maglumat berilmegi mümkin diýen pikir derrew ýok edilýär.
Indiki äşgär ädim 2-nji bazara ýokaryk syýahat etmek bolar. 4096-nyň buferler üçin oňat deňagramlydygyny göz öňünde tutup, geliň şol ýerden baha bereliň:
4096 * 32 = 131072 (falls short by about 1/2) 4096 * 64 = 262144 (is in the ballpark of what we're expecting) 262144/384000 ~ 0.682 seconds of data
0.682 sekunt 0,7 sekunt baradaky çaklamamyza şeýle bir laýyk geldi welin, 262144- iň yzymyzdaky hemişelikdigini derrew bildim.
Düşünjä boýunça mesele çözüldi. Indi diňe guraly gurmak meselesi bardy. Munuň üçin zerur bolardy:
Şol ýerde özüňizi has köp duýjakdygyňyza ynanýaryn.
Şeýle-de bolsa, Google indeksirlemegi üçin, RIFF we BEXT sözbaşylaryny döredýän usullary şu ýerde goýýaryn, tapyp bilmedim, gynansak-da, bu prosesi boýun almak isleýänimden has uzaga çekdi.
public class RiffFile { /** * Creates a RIFF header with BEXT and fmt chunks * * @param sampleRate the sample rate of the audio (8000Hz, 44100Hz, 48000Hz, etc) times per second the audio is sampled * @param bitsPerSample the bits per sample (8bits, 16bits, 32bits, etc) * @param channels the number of channels (1 mono, 2 stereo, etc) * @param audioDataSize the size of the audio data in bytes * @return the RIFF header * @throws IOException if an I/O error occurs */ public static byte[] createRiffHeader(int sampleRate, short bitsPerSample, short channels, int audioDataSize) throws IOException { // calculate the byte rate, block align and file size int byteRate = sampleRate * channels * bitsPerSample / 8; short blockAlign = (short) (bitsPerSample * channels / 8); // stream that will carry the new RIFF file ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(byteArrayOutputStream); // riff header out.writeBytes("RIFF"); out.writeInt(Integer.reverseBytes(0)); out.writeBytes("WAVE"); // 9-12 Format always WAVE // bext chunk writeBextChunk(out); // fmt chunk out.writeBytes("fmt "); // 13-16 chunkID is "fmt " with trailing whitespace out.writeInt(Integer.reverseBytes(16)); // 17-20 size of this chunk, is 16 byts out.writeShort(Short.reverseBytes((short) 3)); // 21-22 (2 bytes) audioFormat (1 PCM integer, 3 IEEE 754 float) out.writeShort(Short.reverseBytes(channels)); // 23-24 (2 bytes) numChannels (1 mono, 2 stereo, 4, etc) out.writeInt(Integer.reverseBytes(sampleRate)); // 25-28 (4 bytes) sampleRate (8000, 44100, 48000, etc) out.writeInt(Integer.reverseBytes(byteRate)); // 29-32 (4 bytes) byteRate (sampleRate * numChannels * bitsPerSample/8) out.writeShort(Short.reverseBytes(blockAlign)); // 33-34 (2 bytes) blockAlign (numChannels * bitsPerSample/8) out.writeShort(Short.reverseBytes(bitsPerSample)); // 35-36 (2 bytes) bitsPerSample (8bits, 16bits, 32bits, etc) // data chunk out.writeBytes("data"); // 37-40 chunkID ID is "data" out.writeInt(Integer.reverseBytes(audioDataSize)); // 41-44 size of this chunk varies out.close(); // write the full size of the file on the 4-8 bytes byte[] outArr = byteArrayOutputStream.toByteArray(); int size = outArr.length - 8; ByteBuffer.wrap(outArr, 4, 4).order(ByteOrder.LITTLE_ENDIAN).putInt(size); return outArr; } private static void writeBextChunk(DataOutputStream out) throws IOException { // bext chunk out.writeBytes("bext"); out.writeInt(Integer.reverseBytes(256 + 32 + 32 + 10 + 8 + 8 + 8 + 2 + 180 + 4 + 4 + 4 + 4 + 4 + 180)); // bext chunk size (fixed size for BWF) // description 256 bytes writeToArray(out, 256, ""); // 256 bytes description writeToArray(out, 32, "ZOOM M3"); // 32 bytes originator writeToArray(out, 32, ""); // 32 bytes originator reference writeToArray(out, 10, "2023-10-01"); // 10 bytes origination date writeToArray(out, 8, "12:00:00"); // 8 bytes origination time writeToArray(out, 8, "12:00:00"); // 8 bytes time reference out.writeLong(Long.reverseBytes(0L)); // 8 bytes time reference out.writeShort(Short.reverseBytes((short) 0)); // 2 bytes version out.write(new byte[180]); // 180 bytes UMID out.writeFloat(0.0f); // 4 bytes loudness value out.writeFloat(0.0f); // 4 bytes loudness range out.writeFloat(0.0f); // 4 bytes max true peak level out.writeFloat(0.0f); // 4 bytes max momentary loudness out.writeFloat(0.0f); // 4 bytes max short term loudness // zoom m3 needs this bit to allow file to be read from "zoom m3 edit & play" writeToArray(out, 180, "A=PCM,F=48000,W=32,M=stereo,T=M3;VERSION=1.00;MSRAW=ON ;"); } }
Görşüňiz ýaly, BEXT bölegine kän bir güýç sarp edilmedi; Diňe "Zoom M3 Edit & Play" -iň gabat gelmegini üpjün etmek üçin döretdim.
Gyzykly okadyňyz diýip umyt edýärin. Bu gyzyklylygy saklap, pikirleniş prosesinde perdäni galdyrjak boldum. Hakyky kod öz-özüni düşündirer diýip umyt edýärin we şu ýerden tapyp bilersiňiz:
https://github.com/wasteofserver/zoom_m3_mic_wav_data_recover/
Kynçylyk diňe ýitirilen ýazgylary dikeltmek bilen çäklenmän, adaty gurallaryň näme üçin şowsuz bolandygyna düşünmek we işleýän usuly ösdürmekdi.
Recordazga almak has aňsat bolsa-da, tapmany çözmegiň tolgundyryşy tagallalary peýdaly etdi. Netijede, Zoom M3 MicTrak ýazgylaryny üstünlikli dikeldýän adaty gurlan çözgüt aldyk.
Eger şuňa meňzeş ýagdaýa düşen bolsaňyz, bu bölünişik size kömek eder diýip umyt edýärin. Bolmasa, iň bolmanda maglumatlary dikeltmek dünýäsinde azajyk başdan geçirmelerden lezzet almaly bolarsyňyz.
Bu hekaýa ilkinji gezek https://wasteofserver.com/zoom-m3-mictrak-file-recovery/ sahypasynda çap edildi. Soňky täzelenmeler we teswirler üçin şol ýerde barlap bilersiňiz.