ID3 (z angl. Identify an MP 3 ) je formát metadat nejběžněji používaný ve zvukových souborech MP3 . ID3 obsahuje údaje o názvu skladby, albu, jménu interpreta atd., které používají přehrávače médií a další software, stejně jako hardwarové přehrávače, k zobrazení informací o souborech a automatické organizaci zvukové sbírky.
Existují dvě nekompatibilní verze ID3: ID3v1 a ID3v2.
Po vytvoření formátu MP3 nastal problém s ukládáním informací o hudebním souboru - s tím se v MP3 nepočítalo. V roce 1996 přišel Eric Camp s myšlenkou přidání části paměti do souboru, aby se tento problém vyřešil.
První verze ID3 tagů měla pouze 128 bajtů , počínaje řetězcem TAG . Tag byl umístěn na konec souboru, aby byla zachována kompatibilita s dřívějšími hráči. Někteří z nich udělali malý hluk, když se pokusili přečíst štítek, ale většina z nich to ignorovala. Moderní hráči vnímají tyto informace správně.
Vzhledem k tomu, že bylo málo místa pro data, mohly být do takových tagů uloženy pouze základní informace o skladbě: název, album, interpret, komentář - 30 bajtů pro každé pole, 4 bajty pro uložení roku a jeden bajt pro žánr, který mohl být vybrán z předdefinovaného seznamu s 80 hodnotami ( Winamp později seznam rozšířil o 68 hodnot). Pokud názvy skladeb nebo alb obsahovaly více než 30 znaků, byly oříznuty. O nějaké pokročilé možnosti ukládání metadat samozřejmě kvůli omezením velikosti nemohla být řeč.
Jediné vylepšení implementované ve verzi 1.1 navrhl Michael Mutschler v roce 1997: protože pole komentářů je stále příliš malé na to, aby bylo možné uložit cokoli užitečného, bylo rozhodnuto jej zkrátit o dva bajty a použít je k uložení číselné stopy.
Rozšířený tag je dodatečný blok dat před tagem ID3v1, který umožňuje třikrát rozšířit některá pole ID3(v1-v1.1) a přidat některá nová pole. Vývojáři tohoto rozšíření se snažili řídit myšlenkou co největší kompatibility, takže začátek všech tagů je uložen v běžném tagu ID3v1, který umožňuje jakémukoli programu, který rozumí ID3v1, číst nebo zapisovat data, a to pouze v případě, že neexistují dostatek přidělených bajtů, bude pokračování pro každé pole uloženo v rozšířeném bloku (pokud tam program může zapisovat). Rozšířený blok zabírá 227 bajtů, je umístěn před tagem ID3v1 a začíná tagem TAG+. Bylo mu přiděleno dalších 60 bajtů pro pole „název skladby“, „interpret“ a „album“, jeden bajt pro rychlost (styl, typ) hudby (00=neznámý, 01=pomalý, 02=střední, 03= rychlý, 04=hardcore), 30 bajtů pro volný vstup do žánru a také 6 bajtů pro čas začátku a konce hudby v souboru (například pro plynulé zvýšení hlasitosti). Pole komentáře nebylo rozšířeno a zůstalo rovné 28–30 bajtů. Pokud není použito nic z výše uvedeného, je automaticky vynecháno.
Byl to neoficiální standard a podporoval ho malý počet hráčů.
Řetězce jsou odděleny nulami nebo mezerami. Nepoužitá pole se vyplňují jako prázdné řádky.
ID3(v1-v1.1): 128 bajtů
Pole | Délka, bajty | Popis |
---|---|---|
záhlaví | 3 | ŠTÍTEK |
název | třicet | 30 znakové jméno |
Vykonavatel | třicet | 30znakové jméno umělce |
Album | třicet | Název alba o 30 znacích |
Rok | čtyři | Řetězový vstup roku |
Komentář | 28 [1] nebo 30 | Komentář |
Nulový bajt [1] | jeden | Pokud je přítomno číslo stopy, je tento bajt 0 |
stopa [1] | jeden | Číslo skladby v albu nebo 0; počítá se pouze v případě, že předchozí pole je 0 |
Žánr | jeden | Index v seznamu žánrů nebo 255 |
Umístěno před ID3v1 tag: 227 bajtů
Pole | Délka, bajty | Popis |
---|---|---|
záhlaví | čtyři | "TAG+" |
název | 60 | Dalších 60 bajtů pro pole "Název" ID3v1 |
Vykonavatel | 60 | Dalších 60 bajtů pro pole "Umělec" ID3v1 |
Album | 60 | Dalších 60 bajtů pro pole "Album" ID3v1 |
Rychlost (styl, typ) hudby | jeden | Čím vyšší číslo, tím „aktivnější“ hudba |
Žánr | třicet | řetězec 30 znaků |
Doba spuštění | 6 | Čas ve formátu mmm: ss |
čas ukončení | 6 | Čas ve formátu mmm: ss |
Velikosti polí ID3v1 s ohledem na rozšířenou značku budou:
Pole | Velikost, bajty |
---|---|
název | 90 |
Vykonavatel | 90 |
Album | 90 |
Lyrics3 je prvním pokusem o vložení textu do MP3 souboru od Petra Strnada během éry ID3v1.x. Textový blok byl umístěn mezi řádky LYRICSBEGIN a LYRICSEND na konci souboru, před tag ID3v1.x (pokud neexistoval, byl vytvořen). Text byl napsán v kódování ISO-8859-1 , maximální délka byla 5100 bajtů, řádky byly odděleny znaky CR + LF, byla implementována podpora časových razítek.
Postupem času byl vydán formát Lyrics3 v2.00, který měl více funkcí (zejména se výrazně zvětšila velikost bloku, objevila se další pole a možnost vložit obrázek). Blok 2,00 byl umístěn mezi řádky LYRICSBEGIN a LYRICS200 a měl proměnnou délku, která byla zapsána v posledních šesti bytech před posledním řádkem LYRICS200.
Tato myšlenka nebyla široce používána kvůli vydání standardu ID3v2, ve kterém byla taková myšlenka organizována flexibilněji a funkčněji.
ID3v1 bylo hodně kritizováno za řadu problémů. Předně se jedná o příliš malá pole, jejichž velikost nestačí k uložení většiny informací – 30 bajtů na dlouhá jména nestačilo, byly ořezány.
Mnoho odpůrců našel i návrh uzamknout žánr omezenému počtu alternativ. Mnohým se jednoduše nelíbil navrhovaný seznam, který nevymezoval prostor pro takové žánry, jako je například minimalismus nebo baroko .
ID3v1 také postrádal internacionalizaci . Podle specifikace musí být všechny řetězce uloženy v ISO 8859-1 , ale v praxi uživatelé často používají národní kódování, takže často viděli krakozyabry .
V reakci na kritiku ID3v1 byl vyvinut nový standard ID3v2. Vyšel 26. března 1998 a je úplně jiný než ID3v1.
ID3v2 tagy mají proměnnou délku a mohou se objevit na začátku [2] nebo na konci [3] souboru. Značka se skládá z několika "rámců". Každý snímek obsahuje nějaký druh metadat. Například rám „TIT2“ obsahuje název díla a rám „WOAR“ obsahuje odkaz na web umělce. Maximální velikost rámce je omezena na 16 MB a tag nesmí přesáhnout 256 MB. Text je uložen v kódování UTF-16 [2] nebo UTF-8 [3] . Textové rámce jsou označeny kódovacím bitem.
Standard ID3v2 definuje 84 typů rámců a také umožňuje aplikacím vytvářet vlastní rámce. Mezi standardní rámce patří rámečky pro uložení titulního obrázku, tepů za minutu , informací o autorských právech a licencích, textů písní, volného textu, odkazů a dalších dat.
Soubor obsahující značku ID3v2 začíná posloupností znaků „ID3“. Tyto znaky jsou součástí značky „Header“. Záhlaví je dlouhé 10 bajtů a obsahuje níže uvedená pole. Pořadí bajtů v ID3v2 je big endian . Velikost je v 7bitových bajtech (nejvýznamnější bit je nastaven na 0).
Pole | Offset, bajty | Délka, bajty | Popis |
---|---|---|---|
Podpis | 0 | 3 | "ID3" |
Verze | 3 | 2 | 2, 3 nebo 4 |
Vlajky | 5 | jeden | |
Velikost | 6 | 4 (7 bitů) |
Záhlaví rámce je dlouhé 10 bajtů a obsahuje pole uvedená v následující tabulce.
Pole | Offset, bajty | Délka, bajty | Popis |
---|---|---|---|
Identifikátor | 0 | 3 [4] , 4 [5] | Typ rámu, velká písmena latinky a čísla |
Velikost | 3 | čtyři | |
Vlajky | 5 | 2 |
ID3v2.2 je první široce používaná verze ID3v2. Nyní považován za zastaralý. Místo čtyřznakového se používá tříznakové ID rámce ("TT2" pro rámec s názvem práce místo "TIT2").
Formáty rámců ID3v2.2, ID3v2.3 a ID3v2.4 se mírně liší.
ID3v2.3 je dnes třetí a nejrozšířenější verzí. Zvětší velikost pole "Identifikátor" na čtyři bajty, přidá pole "Počet snímků". Rámec může obsahovat více hodnot oddělených „/“.
ID3v2.4 je čtvrtá (aktuální) verze. Umožňuje ukládání řetězců v kódování UTF-8 . K oddělení hodnot se používá prázdný bajt a v textu lze použít znak "/". Nyní můžete přidat značku na konec souboru, jako v ID3v1.
V prosinci 2005 byla navržena rozšíření [6] pro propojení textu a obrázků s časem přehrávání. První umožňuje vytvořit obsah pro rychlý přechod na konkrétní místo (nebo kapitolu) v rámci zvukového souboru. S pomocí druhého můžete organizovat zobrazení obrázků (slideshow). Typickou aplikací je podcasting .
Kvůli rozdílům ve verzích ID3v2 mnoho hráčů stále nepodporuje všechny verze značek. Problém je v tom, že různé verze používají různé datové struktury. Například pro extrakci dat ze snímků „TIT2“ (s názvem písně) a „USLT“ (s textem písně) jsou vyžadovány různé algoritmy. Jiné formáty značek, jako je APEv2 , ukládají data jako páry klíč-hodnota a tento problém nemají.
ID3v2 ukládá informace o zvukových datech. Například snímek „TLEN“ ukládá délku skladby a snímek „AENC“ ukládá informace o metodě komprese .
V ID3v2.2 a ID3v2.3 musí být značka umístěna na začátku souboru, což usnadňuje streamování, ale vyžaduje přepsání celého souboru, když se změní pole značek. Verze ID3v2.4 vám umožňuje umístit data tagu na konec souboru. Editory tagů mohou ponechat v polích tagů místo, aby zabránily přepsání souboru, pokud je tag zvětšený, ale tato operace není standardní: požadavky na tagy se velmi liší, zvláště pokud jsou k hudbě připojeny „APIC“ (asociativní obrázky). .
Protože většina souborů obsahuje rané verze tagů ID3v2, vývojáři nijak nespěchají, aby do svých produktů přidali podporu všech formátů tagů a všech typů rámců popsaných ve standardu ID3v2.
Průzkumník WindowsPrůzkumník Windows[ co? ] podporuje značky verze ID3v1 a ID3v2.3.
Průzkumník nemůže přečíst značku verze ID3v2.4 a když se ji pokusíte upravit, zobrazí chybu 0x8007000D.
Průzkumník čte a zapisuje ID3v1 tagy, ale se zvratem. Pokud je v souboru MP3 zapsán pouze tag ID3v1, Průzkumník jej přečte a při editaci zapíše data do ID3v1 a přidá tag ID3v2.3. Úprava tagů ID3v1 není podporována. Pokud soubor obsahuje tagy ID3v1 i ID3v2.3, Průzkumník načte verzi ID3v2.3 a při úpravách duplikuje data v obou značkách. Pokud v souboru MP3 nebyly žádné značky, Explorer zapíše pouze značku ID3v2.3.
Existuje mnoho programů pro úpravu ID3 tagů. Mezi nimi:
Schopnosti:
ID3 tagy byly vytvořeny, aby byly zahrnuty do souborů MP3 a MP3Pro , ale lze je použít i v jiných formátech souborů. AIFF je jediný formát, který začal široce používat značku ID3v2. Tento formát je založen na RIFF; ID3 tag je uložen uvnitř "chunk" (chunk) s názvem "ID3". WAV (také založené na RIFF) může obsahovat ID3 tag, ale tato funkce se nepoužívá. "Broadcast WAV" je jediný široce používaný systém označování WAV. Formáty Windows Media ( ASF , WMA , WMV ) mají své vlastní formáty značek, ale také podporují vkládání ID3 jako atribut [7] . Do MP4 je možné zahrnout ID3 [8] , ale většina programů to nepodporuje. Jiné formáty založené na kontejnerech používají své vlastní systémy označování. Například Vorbis používá komentář Vorbis a nepodporuje vkládání ID3, protože ID3 může narušit strukturu kontejneru.