AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi ID3Tag einer String-Variable zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

ID3Tag einer String-Variable zuweisen

Ein Thema von Lordnightmaere · begonnen am 31. Jan 2004 · letzter Beitrag vom 8. Okt 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: ID3Tag einer String-Variable zuweisen

  Alt 26. Sep 2004, 00:32
jo stimmt aber id3 v2 benütz ich ungern weil er langsam ist...
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#12

Re: ID3Tag einer String-Variable zuweisen

  Alt 26. Sep 2004, 02:15
[ot]
Und ID3v2 hat diesen lustigen Int28, ansonsten ist er besser gelungen.
Nur bringt das nix, sich auf einen festzulegen (wenn man die mp3s nicht selbst erstellt oder ändert), weil manchmal ist v1 drin, manchmal v2, manchmal beide.
[/ot]
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: ID3Tag einer String-Variable zuweisen

  Alt 26. Sep 2004, 09:40
jo
also ich mein des so:

bei meiner mp3 datenbank hab ich alle id3 v.2 tags gelöscht und nur interpret unt titel mit v1.1 gespeichert.
drum hab ich auch die meisten programme so gebaut dass sie in erster linie 1.1 lesen weil doch fast jede datei ein 1.0/1.1 tag hat.
(sowieso ist v2 scheisse weil man da immer die ganze datei verschieben muss um den täg ein buchstabe länger zu machen oder so, ist deshalb halt ziemlich langsam.


gibts eigentlich en unterschied zwischen 1.0 und 1.1?

achja und gibts eben dafür ne funktion beim TStream(TFileStram) dass ich an der cursorposition sag mer mal 10 bytes einfügen kann?
(weil mit .Write(S[1], Length(S)) überschreibt er ja...
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#14

Re: ID3Tag einer String-Variable zuweisen

  Alt 26. Sep 2004, 15:50
Moin!

- Viele gute ID3v2 Tagger schreiben Nullbytes nach dem Tag bis zur ersten Frame des MP3's so dass man diesen Platz für veränderte Tags nutzen kann - ohne die Datei umzukopieren. Z.B. Winamp

- Unteschied ID3v1.0 und ID3v1.1: v1.0 hat keine Tracknumber und der Comment ist 30 Zeichen lang. ID3v1.1 hat die Tracknummer und der Comment ist 28 Zeichen lang.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: ID3Tag einer String-Variable zuweisen

  Alt 26. Sep 2004, 16:31
@mütze:
jo das mit der tracknummer hab ich auch schon rausgefunden, trotzdem danke.
sollte man des jetzt so machen:
Delphi-Quellcode:
if (comment[29] = #0) and (comment[30] > #0) then TrackNummer := Ord(comment[30])
else TrackNummer := 0;
oder?

und zum innen filestream oder so ein paar bites einfügen gibts gar keine funktion?
muss ich dann den rest der datei inne variable(string oder so) kopieren und dann wieder schreiben?(da musses doch was komfortableres gebn...)
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#16

Re: ID3Tag einer String-Variable zuweisen

  Alt 26. Sep 2004, 21:00
Moin!

Das mit der Tracknummer ist haargenau richtig - keine Einwände. Ansonsten kannst du auch gerne mal ein Blick in meine MP3Lib werfen auf meine HP - diese liegt da samt Quellen zur freien Nutzung.

Und mit dem Schreiben von Freiraum bei den ID3v2 Tags:

1. Wenn der Tag schon vorhanden ist, dann findest du diesen Zwischenraum ja raus, weil
1a) entweder der ID3 Header diesen freien Platz mit einschliesst (also in seiner Längenangabe mit enthält), oder
1b) die erste Frame weit später zu finden ist als direkt nach dem Ende des ID3 Tags
und wenn das irgendwie der Fall ist, dann musst du entscheiden, ob der neue Tag da noch reinpasst oder nicht. Wenn ja, dann kannst du doch einfach schreiben - ins Originalfile. Wenn nicht, dann musst du wiederrum den schon angesprochenen langsamen Weg nehmen, genauso wenn...

2. kein ID3v2 Tag vorhanden ist, dann musst auch diesen Weg einmal gehen und das dementsprechend anlegen.

Nun noch was dazu zum programmieren:

1. ein TStream Nachfahre bietet einem die einfache Methode CopyFrom() - damit kann man leicht nach schreiben des Tags den alten Inhalt (also die Frames, die Musik) hinten anhängen.
2. Man kann bei einem TMemoryStream, TFileStream, etc einfach die Property Size setzen und somit auch nach alleinigen schreiben des ID3v2 Tags die Datei vergrössern und dann z.B. die Daten mittels CopyFrom() anhängen.

Ich muss dazu noch gestehen, das meine ID3 Lib das ganze mit den freien Bytes beim Editieren/Schreiben noch nicht unterstützt - ich habe es aber ebend in die ToDo List aufgenommen. Als nächstes kommt aber erstmal UniCode Support, der schon halb fertig ist und bei vielen Tags funktioniert...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: ID3Tag einer String-Variable zuweisen

  Alt 26. Sep 2004, 21:55
ok thänks

-mal bissle OT:
du weist net zufällig wo ich ne strukturinfo vom Xing tag und vom FhG tag finden kann?
(oder ne gscheite möglichkeit ohne die beiden tags die länge vonnem VBR zusammenzurechnen)?
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#18

Re: ID3Tag einer String-Variable zuweisen

  Alt 27. Sep 2004, 00:54
Moin!

Die beiden Strukturen habe ich nicht - die brauche ich nicht und will sie nicht benutzen in meiner Lib. Auch der Frauenhofer Codec kann VBR und der benutzt nicht den Xing Tag, daher ist es auch nicht sicher bei einem VBR immer die Spielzeit heraus zu bekommen. Am besten den Playtime Tag auslesen wenn vorhanden bei ID3v2 oder ansonsten einfach die Frames durchrennen und dann einfach schnell zählen bzw. rechnen mit den einzelnen Bitraten der Frames. Wenn du willst, dann kann ich dir hier einen Source geben der bei einem MP3 von Frame zu Frames durchgeht und immer den Frame Header dekodiert - da kannst du dir dann in 2 Minuten eine kleine Routine draus stricken um die Spiellänge zu berechnen...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: ID3Tag einer String-Variable zuweisen

  Alt 27. Sep 2004, 06:35
ja aber des problem ist ja dann dasses halt so langgeht oder?
ích hab des mal ausprobiert da hat des glaub über 15 sekunden gebraucht für son lied.
vielleicht hab ich auch bloß bissle langsame such algorythmen kannst mir mal schicken wie du den header suchen würdest?
(ich probier des heut mittag nommal aus und poste dann die schnellste methode...)

achja, da wär noch was:



(und mit den xing tags: des würd ich ja dann auch so machen dasses nach den XING sucht und nur wenn die nicht da sind halt die frames durchzählt weils dann einfach schneller geht)
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#20

Re: ID3Tag einer String-Variable zuweisen

  Alt 28. Sep 2004, 09:31
Moin!

Das Projekt werde ich heute abend dann mal hochladen - gestern hatte ich es versäumt...

MfG
Muetze1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz