![]() |
Re: Mp3FileUtils
Zitat:
@Gausi... Ooouh - ich bin sooooo blöööd. :nerd: Ich habe zwar aus den Utils die Zeit für das Mp3 ermittelt und in einer Variablen abgelegt, aber in einer anderen Procedure nicht aus dieser Variable verwendet, sondern die Tracklength vom Mediaplayer - :nerd: - und der hat es immer falsch erkannt (ist auch blöd, wenn ich meine Variable auch TrackLength nenne, wenn die vom Mediaplayer genauso heißt, ich Depp)! Alle Aufregung umsonst - sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry und nochmal sorry. :nerd: |
Re: Mp3FileUtils
Der VBRI-Header ist zwar noch nicht drin, trotzdem der Hinweis auf eine neue Version.
Unter Delphi 2009 gab es Probleme mit dem ID3v1-Tag, der durch ein Char-AnsiChar-Dingens weder gelöscht noch überschrieben werden konnte. Beim Speichern wurde dadurch immer wieder ein neuer Tag (also 128 Bytes) an die Datei angehängt. Das hat die Datei zwar nicht beschädigt, was ihre Abspielbarkeit betrifft, ist aber dennoch äußerst unschön. |
AW: Mp3FileUtils
Ich habe folgendes festgestellt:
Die Dauer, die TMpegInfo zurückgibt, stimmt mit der Angabe im Explorer überein, nicht aber mit der in Winamp und iTunes. Die Angaben sind zum Teil ziemlich weit auseinander: bei Iron Maiden - Remember Tomorrow zeigen mir beispielsweise TMpegInfo und Explorer 5:48 an, bei Winamp und iTunes ist der Song nur 5:28 lang :cry: Weisst du, woran das liegen könnte? Sind die Dateien eventuell fehlerhaft? MfG Z4ppy €dit: Interessant ist übrigens: über die SendMessage API von Winamp bekommt man wieder den höheren Wert, intern zeigt Winamp aber den niedrigeren an :lol: |
AW: Mp3FileUtils
Es gibt immer wieder mal solche Fälle, wo meine Unit (oder auch mal andere Programme) falsche Werte liefern. Das kann unterschiedliche Ursachen haben: Eine wäre die falsche Erkennung von "variable Bitrate", z.B. durch defekte Xing-Header oder die VBRI-Header, die ich bisher nur in meiner lokalen Version erkennen kann.
Spontan würde ich hier auf einen sehr großen ID3v2-Tag tippen, aber da kann ich mich auch irren. Schick mir so eine Datei am besten mal per Mail, dann kann ich mir die mal genauer angucken. :) Adresse ist mail<Ät>gausi<Punkt>de |
AW: Mp3FileUtils
Hi,
leider habe ich ein Problem mit den Demos. Ich nutze Demo_ID3v2_Level2.exe um ein Bild anzuhängen. In der "orginal" Demo-Exe klappt es auch. Bei dem Demo-Sourcecode der dabei ist, klappt es nicht. Es klappt nur wenn vorher schon ein Bild enthalten war. Möchte man ein mp3 um ein Bild erweitern, dann klappt es nur mit der "orginal" Demo_ID3v2_Level2.exe. Wäre toll wenn mir einer helfen würde. Danke im voraus EDIT: Ich habe ein bissl getraced. GetPictureFrameIndex da kommt er mit -1 zurück weil kein Bild da ist. Er legt es dann aber nicht an. Sind die DemoSource andere als die exe-files?? Edit2: Der fehler ist hier.
Delphi-Quellcode:
Er merkt das kein Bild da ist, legt es an (NewFrame) und "schmeisst" es weg. Trotzdem frage ich mich warum es bei den demo-exe-files geht. Dürfte ja nicht...
// ------------------------------------------
// set pictures // ------------------------------------------ procedure TID3v2Tag.SetPicture(MimeTyp: AnsiString; PicType: Byte; Description: UnicodeString; stream: TStream); var IDX: Integer; NewFrame: TID3v2Frame; idStr: AnsiString; oldMime: AnsiString; oldDescription: UnicodeString; oldType: Byte; oldStream: TMemoryStream; begin idStr := GetFrameIDString(IDv2_PICTURE); IDX := GetPictureFrameIndex({PicType,} Description); if IDX <> -1 then begin if Stream = NIL then Frames.Delete(IDX) else begin if (Description = '*') or (MimeTyp = '*') or (Stream.size = 0) then begin oldStream := TMemoryStream.Create; (Frames[IDX] as TID3v2Frame).GetPicture(oldMime, oldType, oldDescription, oldStream); if (Description = '*') then Description := oldDescription; if (MimeTyp = '*') then MimeTyp := oldMime; if Stream.Size = 0 then oldStream.SaveToStream(Stream); oldStream.Free; end; (Frames[IDX] as TID3v2Frame).SetPicture(MimeTyp, PicType, Description, Stream) end; end else begin if (Stream <> NIL) and (Stream.Size > 0)then begin NewFrame := TID3v2Frame.Create(idStr, TID3v2FrameVersions(FVersion.Major)); NewFrame.AlwaysWriteUnicode := fAlwaysWriteUnicode; newFrame.CharCode := fCharCode; NewFrame.AutoCorrectCodepage := fAutoCorrectCodepage; Frames.Add(newFrame); if (Description = '*') then Description := ''; if (MimeTyp = '*') then MimeTyp := 'image/jpeg'; newFrame.SetPicture(MimeTyp, PicType, Description, stream) end; end; end; |
AW: Mp3FileUtils
Sorry, ich steh nun TOTAL aufm schlauch. Sobald er TID3v2Tag.SetPicture macht, speichert er garkeine infos. Kommentier ich diese eine zeile aus, nimmt er wenigtens die anderen einträge.
Nun bin ich total verwirrt... UPS... Sorry für den "spam". Ich wollte eigentlich editieren.. |
AW: Mp3FileUtils
Kann sein, dass da in der 0.5er Version ein Bug drin ist. Ich hab es grade mit der aktuellen Version 0.6 ausprobiert, und da funktioniert das. Auch wenn bisher kein Bild in dem mp3 drin ist. Ich änder die Links im ersten Posting mal, das hatte ich hier vergessen. ;-)
Um ein Bild erweitert wird da aber nichts. In der "Level2-Demo" wird "irgendein" Bild geschrieben, d.h. ein vorhandenen wird überschrieben. |
AW: Mp3FileUtils
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
erstmal vielen dank für deine antwort. Aber ich habe es mit der 06er probiert. Die habe ich von deiner Homepage geladen. Das mit dem NewFrame (oben der Codesnipsel) verstehe ich leider garnicht. Muss das nicht auch wieder freigeben werden? Dort läuft er ja durch wenn kein Bild vorhanden ist. Auch verstehe ist nicht warum deine demo exe 170kb grösser ist, als die exe die ich mit deiner demo erstelle. Zumal es wirklich mit DEINER exe funktioniert. Das heisst wenn kein Bild enthalten war, wird das bild reingemacht und auch danach z.b. im Mediaplayer angezeigt. Erstelle ich die, geht es wirklich nur wenn schon ein bild vorhanden war. Ich hänge dir die exe mal hier dran. Vielen dank für deine hilfe!!! |
AW: Mp3FileUtils
Der NewFrame wird später automatisch freigegeben, wenn das TID3v2Tag-Objekt selbst freigegeben wird. Das ist halt ein neuer Block von Information, der im Tag enthalten ist und von diesem auch verwaltet wird.
Wenn es mit meiner Exe klappt, aber mit deinem Compilat der Original-Demo nicht, dann habe ich einen schlimmen Verdacht, falls du wirklich Delphi 7 verwendest, wie im Profil angegeben. Da muss ich wohl am WE mein D7 Personal nochmal installieren und ausprobieren. Könnte sein, dass da noch ein String-AnsiString-Problem besteht :oops:. Die Demo habe ich nämlich mit D2009 compiliert. |
AW: Mp3FileUtils
Jap, ich habe es grade probiert. Unter 2009 geht es wirklich. Unter D7 nicht. Unter 2009 ist auch die .exe so gross wie deine. Unter 2009 tritt beim laden eines mp3 OHNE bild folgender fehler auf. Aber nehme ich dann ein Bild rein und speichere es ab, dann ist es wirklich da. :thumb:
"Im Projekt Demo_ID3v2_Level2.exe ist eine Exception der Klasse EJPEG mit der Meldung 'JPEG-Fehler #42' aufgetreten." Wär echt super wenn man das fixen könnte damit man/ich es auf D7 nutzen könnte. Vielleicht kannst du mir ja sagen wo ich ungefähr suchen muss. Sollte ich das finden, werde ich dir das natürlich zukommen lassen. Nochmals danke für die Hilfe!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz