Delphi-PRAXiS
Seite 4 von 9   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Mp3FileUtils (https://www.delphipraxis.net/71449-mp3fileutils.html)

SearchBot 8. Mai 2009 16:53

Re: Mp3FileUtils
 
Zitat:

Zitat von Satty67
anpassen an Delphi5 (und wohl auch 3/4) geht, man muss halt etwas Handarbeit investieren.

Ja, hab ich gemacht; siehe DL oben, da sind die Units drin (v0.4) - ich musste einiges um diese beiden Dummys erweitern, aber dann hat es auf Anhieb geklappt!

@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:

Gausi 16. Aug 2009 14:37

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.

Z4ppy 16. Jan 2011 02:07

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:

Gausi 16. Jan 2011 09:23

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

DelTurbo 30. Jun 2011 13:17

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:
// ------------------------------------------
// 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;
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...

DelTurbo 30. Jun 2011 16:30

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..

Gausi 30. Jun 2011 19:27

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.

DelTurbo 1. Jul 2011 09:02

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!!!

Gausi 1. Jul 2011 09:16

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.

DelTurbo 1. Jul 2011 09:27

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.
Seite 4 von 9   « Erste     234 56     Letzte »    

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