Portál AbcLinuxu, 1. července 2025 15:57

Wavextract - program pro extrakci zvuku z JPEG fotografií

31.5.2006 20:33 | Přečteno: 2091× | Free Software | poslední úprava: 31.5.2006 20:36

Máte digitální fotoaparát, který ukládá zvukové záznamy přímo do fotografií (v podobě EXIF dat)? Pokud ano, může se vám hodit můj jednoduchý program wavextract napsaný v Pythonu, který umí z JPEG fotografií tato zvuková data vyextrahovat a uložit jako klasický WAV soubor.

Včera jsem si dával chvilku pauzu mezi učením a chtěl jsem stáhnout fotky z digiťáku. U pár z nich byl i zvukový záznam. Vzpomněl jsem si na svůj už skoro rok starý blogpost Získání zvukového záznamu z EXIF dat, v kterém jsem psal o objevu programu exif-tools schopného extrahovat zvuková data z JPEG obrázků. Tento program byl už léta mrtvý a zapomenutý, ale díky jednomu ze čtenářů se ho podařilo zprovoznit.

Nicméně situace okolo tohoto programu se mi vůbec nelíbila. Zaprvé ho nikdo neudržoval a zadruhé potřeboval vlastní EXIF knihovnu, jejíž název kolidoval s dnes už standardní knihovnou libexif obsaženou snad ve všech distribucích. Navíc u fotek z mého digiťáku HP M307 prováděl extrakci zvuku jaksi pochybně - zvuk byl vyextrahován bez RIFF hlavičky a tak byl problém s jeho přehráváním.

Před nedávnem jsem se tedy (v rámci mého zdokonalování se v Pythonu) rozhodl, že naprogramuji ekvivalent onoho programu. Naštěstí Cčkový kód byl vcelku jednoduchý, a tak jsem během chvilky tušil kde se ona zvuková data v EXIFu schovávají a jak je vydolovat. Napsat na to jednoduchý prográmek v Pythonu byla pro mě otázka asi jen 1 hodiny, hlavně díky využití excelentní Python Imaging Library (PIL), která EXIF data umí parsovat. Pak už šlo jen o to z příslušných segmentů EXIF dat vydolovat RIFF hlavičku a samotná zvuková data.

Pokud by někoho zajímaly přesnějí informace o způsobu uložení těchto zvukových dat (pokud ne, tento odstavec klidně přeskočte ;-)), tak se jedná o data ve FlashPix formátu uložená v APP2 segmentu EXIFu. Specifikace EXIF jsou veřejně dostupné (např. tady: EXIF 2.2), což člověku může hodně pomoct když ví co hledat, avšak specifikace FlashPix formátu veřejně dostupné nejsou, dostupné jsou pouze po zaplacení poplatku (viz. I3A Standards). Samotnou specifikaci FlashPix formátu se mi ovšem i přesto podařilo vygooglit (i když starší verzi), nicméně specifikace FlashPix Audio Extension nikde k mání zdarma ke stažení nebyla. Ovšem díky autorovi onoho původního prastarého programu exif-tools (tedy přesněji utility extract-wave v něm obsažené) a díky KHexEditu to ani nebylo nutné :-)

Ale abych se vrátil k jádru věci - včera když jsem tenhle svuj prográmek znovu využil jsem si uvědomil, že by bylo opravdu dobré ho konečně zveřejnit (chtěl jsem to udělat už dříve, ale nějak jsem byl línej ;-)). Takže jsem založil projekt na BerliOS.de, stahovat můžete odsud: http://developer.berlios.de/projects/wavextract/

Snad se někomu tenhle prográmek hodí ;-) Testoval jsem ho na fotkách z mého digiťáku HP M307 a také na testovací fotce přiložené k exif-tools (podle EXIFu pořízené digiťákem KODAK DC290) a fungoval naprosto bezchybně (MD5 sumy vytvořených WAV souborů si odpovídaly s MD5 sumami WAV souborů vytvořených proprietárním programem EXIFutils).

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

31.5.2006 20:51 midar | skóre: 21 | blog: starý blog
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
Odpovědět | Sbalit | Link | Blokovat | Admin
velmi pekne, za tri:-);)
Mikos avatar 31.5.2006 21:35 Mikos | skóre: 34 | blog: Jaderný blog | Praha
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
Díky :-) Jak říkám doufám že to někdo vubec využije, u toho mého starého blogpostu moc reakcí nebylo ;-)
CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
1.6.2006 14:08 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
fasa vec. Osobne jeste pri importu nestandardnich modulu delam kontrolu uspesnosti. Proste neco takoveho:
try:
    import Image
except ImportError:
    print 'glupy uzivateli PILuj! nebo tak neco...'
Prijde mi to takove "slusnejsi".

na druhou stranu uz je dostupny ebuild, takze kazde slusnejsi distro zavislost vyresi ;)
Kuolema Kaikille (Paitsi Meille).
1.6.2006 14:09 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
dopizdy, mam nejak problem s koordinaci rukou. melo to byt nove vlakno.
Kuolema Kaikille (Paitsi Meille).
Mikos avatar 1.6.2006 14:51 Mikos | skóre: 34 | blog: Jaderný blog | Praha
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
Díky za radu, je pravda že tohle bych mohl ošetřovat taky... já si říkal, že stačí když je v README uvedeno, že člověk musí mít nainstalován PIL ;-) A když ho nainstalován nemá, tak holt schytá výjimku i s tracebackem, jeho smůla :-)

Ale až vydám další verzi, tohle v ní upravím... takto ošetřené je to asi opravu lepší.
CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
Mikos avatar 1.6.2006 14:56 Mikos | skóre: 34 | blog: Jaderný blog | Praha
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
Jinak btw. myslíš že je vhodné použití generátorového výrazu (či jak se tomu správně nadává ;-)) místo klasické list comprehension tam jak sestavuju ten seznam FlashPix streamů? Pak následně na ten generátor používám ve smyčce for funkci enumerate(), tak jestli enumerate náhodou výhody generátoru oproti seznamu nezlikviduje (že by z něho rovnou udělala klasický seznam).

Ještě zas tolik do detailů Pythonu nevidim ;-) Mohl bych si to sice sám otestovat, ale do toho se mi teď nechce :-)
CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
Mikos avatar 1.6.2006 15:06 Mikos | skóre: 34 | blog: Jaderný blog | Praha
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
Tak jsem se na to přeci jen kouknul a enumerate() vyrábí "enumerate object", tzn. list z toho naštěstí nedělá ;-) Ale jak to funguje interně nevím, takže moje otázka zda enumerate() neruší výhody generátoru trvá :-)
CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
Mikos avatar 31.5.2006 21:54 Mikos | skóre: 34 | blog: Jaderný blog | Praha
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
Odpovědět | Sbalit | Link | Blokovat | Admin
Btw. taky bych rád poprosil nějakého zdejšího zkušeného Pythonýra, jestli by se na ten můj prográmek nemohl kouknout a případně mi zkritizovat nějaké špatnosti (pokud v něm jsou). Nechtěl bych se v Pythonu naučit nějakým zlozvykům :-)
CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
31.5.2006 23:48 helb | skóre: 9 | blog: helb | Kralovice
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
Odpovědět | Sbalit | Link | Blokovat | Admin
Původně jsem to otevřel jen kvůli na první pohled nesmyslnému nadpisu, ale tohle je docela šikovná věcička. Ovšem můj foťák takovéto veselé šibalské kousky neumožňuje...
Ovládání hlasem? cat /dev/dsp > /dev/hda1
1.6.2006 13:49 kavol | skóre: 28
Rozbalit Rozbalit vše Re: Wavextract - program pro extrakci zvuku z JPEG fotografií
Odpovědět | Sbalit | Link | Blokovat | Admin
šup s tím do distra ;-)

- dík

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.