Toon posts:

[Delphi] uitlezen MP3 ID3 tag, zowel v1 als v2

Pagina: 1
Acties:
  • 170 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil van Mp3tjes de ID3 tag kunnen uitlezen. Nu lukt dit me prima voor v1 tags, maar v2 tags zijn om de een of andere reden lastiger.

Uit de documentatie voor ID3 v2 tags:
The ID3v2 tag header, which should be the first information in the file, is 10 bytes as follows:


ID3v2/file identifier "ID3"
ID3v2 version $03 00
ID3v2 flags %abc00000
ID3v2 size 4 * %0xxxxxxx


The first three bytes of the tag are always "ID3" to indicate that this is an ID3v2 tag, directly followed by the two version bytes. The first byte of ID3v2 version is it's major version, while the second byte is its revision number. In this case this is ID3v2.3.0. All revisions are backwards compatible while major versions are not. If software with ID3v2.2.0 and below support should encounter version three or higher it should simply ignore the whole tag. Version and revision will never be $FF.
Ik lees hieruit dat de 1e 3 bytes van een MP3 met ID3 v2 tag de waarde 'ID3' zou moeten bevatten.

Dit vertaal ik in (testcode):
code:
1
2
3
4
5
6
  AssignFile(f,'mymp3file.mp3');
  Reset(f,1);
  BlockRead(f,buffer,3);
  CloseFile(F);
  cTest:=Char(buffer[1])+Char(Buffer[2])+Char(Buffer[3]) ;
  ShowMessage(cTest);


Ik zou verwachten dat als mymp3file.mp3 een id3 v2 tag bevatte dat deze procedure mij een messagebox met 'ID3' erin zou laten zien. Dit gebeurd echter niet, en ik kan zo een-twee-drie niet bedenken waarom niet.

Ik weet dat er complete libraries voor te vinden zijn (met een beetje zoekwerk), maar wil perse mijn eigen code gebruiken voor het uitlezen van die tags. Zie het ook een beetje als leercode.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 18:04

Tomatoman

Fulltime prutser

Wat krijg je met je ShowMessage dan wél te zien? En hoe zien de eerste bytes eruit als je je test-MP3'tje opent in een hex editor?

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
Ik krijg 'random rotzooi', overigens komt deze rotzooi wel overeen met wat ultraedit als 1e bits geeft..

Ik zal waarsch. nog moeten experimenteren met dit:
An ID3v2 tag can be detected with the following pattern:
$49 44 33 yy yy xx zz zz zz zz
Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80.
alhoewel ik het raar blijf vinden dat ze eerst praten over de 1e 10 bytes van een file, en daarna gaan vertellen dat je ernaar moet zoeken.. overigens vindt ultraedit in de 3 id3v2 mp3-files welke ik geprobeerd heb geen '49 44 33' terug als sequence..

omdat mp3.org zelden of nooit bereikbaar is, heb ik de specs van id3v2 even gemirrored:
mirror

misschien dat iemand anders er wel wijs uit kan worden?

//edit

voor alle duidelijkheid:

49 44 33 = 'ID3'

[ Voor 9% gewijzigd door Verwijderd op 01-01-2003 21:40 ]


Verwijderd

Topicstarter
Ok, ik ga me nu heel diep zitten schamen.. naar blijkt bevatten de Mp3 tjes welke ik als test gebruik domweg geen ID3 tags :)..

inmiddels werkt het zoals ik wil, excuses..

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 18:04

Tomatoman

Fulltime prutser

Weet je wel zeker dat er een id3v2 inzit? Misschien heb je wel een verkeerde MP3 uitgekozen. Iets waarschijnlijker: misschien staat er foutief 'id3' in plaats van 'ID3'. Het eerste het beste MP3'tje dat ik opende, begint met 'ID3'.

[ Voor 10% gewijzigd door Tomatoman op 01-01-2003 21:47 . Reden: Tja, een beetje late reactie van mij. :D ]

Een goede grap mag vrienden kosten.


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Hoewel de docs stellen dat een IDv2 vooraan in het bestand moet staan, klopt dit soms niet. Een IDv2 kan theoretisch overal in het bestand staan (tussen de mpg-frames that is...). Op die manier is IDv2 ook te gebruiken in multicast streams (die geen duidelijk begin hebben).
Kijk anders even met een HEX-editor naar je MP3...

edit:
Lezen, kvdveer, Lezen |:(

[ Voor 7% gewijzigd door kvdveer op 02-01-2003 10:34 . Reden: Niet gelezen... ]

Localhost, sweet localhost


  • TrasherXL
  • Registratie: September 2002
  • Laatst online: 21-11-2025

TrasherXL

Bicky burger for life

op delphipages.com staat een complete mp3speler met sourcecode met V1+V2idtag ondersteuning

ASUS Commando | Core2Duo E6600 @ 3Ghz air-cooled | Geforce 8800GTX | Raid-0 | 4 GB DDR2-800

Pagina: 1