Doporučujeme: Zkracovač dlouhých adres | Zkus to jinak - logicky | TV program | Stahovač videí z YouTube | Snadné sdílení souborů | Psí Park | Služby pro Váš web

Můj blog – až 10 % špičkového kódu navíc!

Audacity spadl při nahrávání: jak data získat zpět?

Datum: 1. 1. 2007 19.00 | Autor: Lukáš | 22544× | Kategorie: PHP | Komentáře: 350

Dnes v noci jsem si nahrával m2On Year 07 (speciální silvestrovský přímý přenos z Rimini) a hned poté m2o Only 90 (celý den jen super stará dobrá muzika z 90. let). Nahrávání jsem tedy nechal jet přes noc.

Po více než třinácti hodinách záznamu však program Audacity z ničeho nic přestal nahrávat. Dokonce v něm ani nešlo spustit již zaznamenaná data. Jakoby se prostě vypařila. Na disku mi však zůstalo 16 GB dat v téměř 16400 souborech. Žádným z importů, které program nabízí, nešlo data dostat zpět do ucelené formy. Naštěstí jsem po chvíli zkoumání zjistil, že je-li nahrávka uložena jako projekt, program si vytvoří samostatný XML soubor, ve kterém jsou zaznamenány informace o všech souborech a času jejich umístění. No a protože se mi doopravdy nechtělo ručně zapisovat do souboru všech 16 tisíc řádků, rozhodl jsem se pro vygenerování souboru pomocí php - a je to opravdu velmi jednoduché!

Zde je kompletní zdrojový kód, prosím, čtěte v něm umístěné komentáře!

  1 <?

  2
  3
/* do atributu projectname nastavíme název složky, ve které jsou umístěny všechny datové soubory */
  4
  5
$content '<?xml version="1.0"?>
  6 <audacityproject projname="audacity_temp" version="1.1.0" audacityversion="1.2.4" sel0="0.0000000000" sel1="0.0000000000" vpos="0" h="9.5550113379" zoom="86.1328125000" rate="44100.000000" >
  7     <tags title="" artist="" album="" track="-1" year="" genre="-1" comments="" id3v2="1" />
  8 '
;
  9
 10
 11
/* jelikož Audacity ukládá hudbu pro každý kanál zvlášť, uložíme si do dvou různých proměnných data pro určitý kanál - u prvního MUSÍ být channel="0" a u druhého MUSÍ být channel="1"
 12
 13 hodnota maxsamples je maximální hodnota dat uložených v jednom souboru - doporučuji nejdříve zkusit něco nahrát a podívat se do výsledného *.aup souboru, po jak velkých částech Váš program ukládá data
 14
 15 numsamples je asi celkový počet uložených dat, nicméně já ho nijak neměnil a i tak mi to fungovalo */
 16
 17
$content1='    <wavetrack name="Audio stopa" channel="0" linked="1" offset="0.00000000" rate="44100.000000" gain="1.000000" pan="0.000000" >
 18         <sequence maxsamples="262144" sampleformat="262159" numsamples="801280" >
 19 '
;
 20
 21
 22
$content2='    <wavetrack name="Audio stopa" channel="1" linked="0" offset="0.00000000" rate="44100.000000" gain="1.000000" pan="0.000000" >
 23         <sequence maxsamples="262144" sampleformat="262159" numsamples="801280" >
 24 '
;
 25
 26
 27
/* zde už přichází na řadu samotné generování dat
 28
 29 16368 je počet souborů uložených ve složce, kterou jste výše nastavili!
 30
 31 atribut len MUSÍ mít stejnou hodnotu jako je hodnota maxsamples popisovaná výše, to samé číslo vepište u $start=$start+262144; */
 32
 33
$start=0;
 34
 35 for(
$i=0;$i<=16368;$i++){
 36
 37
 38 if(
strlen($i)==1){
 39
$cislo="0000".$i;
 40 }
 41 elseif(
strlen($i)==2){
 42
$cislo="000".$i;
 43 }
 44 elseif(
strlen($i)==3){
 45
$cislo="00".$i;
 46 }
 47 elseif(
strlen($i)==4){
 48
$cislo="0".$i;
 49 }
 50 elseif(
strlen($i)==5){
 51
$cislo=$i;
 52 }
 53
 54
 55
 56 if(
$i%2==0){
 57
 58     
$content1.='    <waveblock start="'.$start.'" >
 59         <simpleblockfile filename="b'
.$cislo.'.au" len="262144"/>
 60     </waveblock>
 61 '
;
 62
 63 }
 64 else{
 65
 66     
$content2.='    <waveblock start="'.$start.'" >
 67         <simpleblockfile filename="b'
.$cislo.'.au" len="262144"/>
 68     </waveblock>
 69 '
;
 70
 71 }
 72
 73
 74
 75 if(
$i%2==0){
 76     
$start=$start+262144;
 77 }
 78
 79 }
 80
 81
 82
/* uzavřeme všechny tagy */
 83
 84
$content1.="        </sequence>
 85         <envelope numpoints='0'>
 86         </envelope>
 87     </wavetrack>
 88 "
;
 89
 90
 91
$content3="        </sequence>
 92         <envelope numpoints='0'>
 93         </envelope>
 94     </wavetrack>
 95 "
;
 96
 97
 98
$content4='</audacityproject>';
 99
100
101
102
/* spojíme proměnné */
103
104
$globalcontent=$content.$content1.$content2.$content3.$content4;
105
106
$soubor fopen("./aaa.aup""w+"); // vytvoříme soubor
107
fwrite($soubor$globalcontent);
108
fclose($soubor);
109
110
111
112
?>

Vytvořený soubor otevřte v programu Audacity. To je vše.


Podobné články:
Jak na ztracená data z disku?
Hromadné nahrávání souborů na megaupload.cz


Komentáře:

Přidat nový komentář:




Ochrana proti spamu. Napište prosím číslici pět: