Delphi-PRAXiS
Seite 7 von 9   « Erste     567 89      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Cover in WMP Format (https://www.delphipraxis.net/195847-cover-wmp-format.html)

Gausi 14. Apr 2018 17:26

AW: Cover in WMP Format
 
ID3_v1 und ID3_v2 sind zwei völlig unterschiedliche Dinge, daher sind das auch zwei Klassen bei Mp3FileUtils. Innerhalb dieser beiden Tag-Versionen wird dann unterschieden zwischen v1.0 und 1.1 bzw. v2.2 (fast nicht mehr zu finden), v2.3 und v2.4.

In der Regel macht man das bei MP3-Dateien so, dass man zuerst nach einem ID3v2-Tag sucht. Falls der nicht da ist, nimmt man den ID3v1-Tag. Dieser ist aber sehr restriktiv und kann außer Interpret, Titel, Album, Kommentar, Jahr, Genre und Track-Nr. (letzteres nur v1.1) keine weiteren Daten enthalten. Wenn man weitere Daten schreiben will, sollte man in dem Fall die Daten aus dem ID3v1-Tag übernehmen in einen neu zu erstellenden ID3v2-Tag.

Für die Ausgabe des Fehlers müsste man noch ein sinnvolles String-Array definieren
Delphi-Quellcode:
MP3ErrorString: Array[TMP3Error] of String = ( ... )
Wundert mich grade ein bisschen, dass ich das damals nicht mit dabei gepackt habe.

EWeiss 14. Apr 2018 17:32

AW: Cover in WMP Format
 
Habe es gerade gemacht bekomme aber Probleme.

Delphi-Quellcode:
const
  cMP3Error : Array[TMP3Error] of String = (
    'MP3ERR_None',
    'MP3ERR_NoFile',
    'MP3ERR_FOpenCrt',
    'MP3ERR_FOpenR',
    'MP3ERR_FOpenRW',
    'MP3ERR_FOpenW',
    'MP3ERR_SRead',
    'MP3ERR_SWrite',
    'ID3ERR_Cache',
    'ID3ERR_NoTag',
    'ID3ERR_Invalid_Header',
    'ID3ERR_Compression',
    'ID3ERR_Unclassified',
    'MPEGERR_NoFrame'
   );
Wie kann ich die jetzt auswerten ?

Delphi-Quellcode:
var
   error : TMP3Error;
...
lblMessageVal.Caption := cMP3Error[Error];
bekomme dann immer nur MP3ERR_None zurück obwohl ein Fehler aufgetreten ist.

Zitat:

Wenn man weitere Daten schreiben will, sollte man in dem Fall die Daten aus dem ID3v1-Tag übernehmen in einen neu zu erstellenden ID3v2-Tag.
Es reicht mir im Moment mal wenn ich die error message auswerten kann.

Darauf kann ich reagieren und ändere mit MP3Tag auf 2.3

gruss

KodeZwerg 14. Apr 2018 17:46

AW: Cover in WMP Format
 
Zeig mal Code wo Du
Delphi-Quellcode:
error
einen Wert zuordnest.

EWeiss 14. Apr 2018 17:48

AW: Cover in WMP Format
 
Zitat:

Zitat von KodeZwerg (Beitrag 1399245)
Zeig mal Code wo Du
Delphi-Quellcode:
error
einen Wert zuordnest.

Delphi-Quellcode:
    Error := MP3ERR_None; //<<<
        Picdata.LoadFromFile(Picfile);

        // basic converting
        v23Tag.Artist := MP3Tags.Artist;
        v23Tag.Album := MP3Tags.Album;
        v23Tag.Title := MP3Tags.Title;
        v23Tag.Year := MP3Tags.Year;
    try
      If (MP3Tags.ReadFromFile(mp3File) = MP3ERR_None) Then
      begin

        v23Tag.Track := MP3Tags.Track;
        v23Tag.Genre := MP3Tags.Genre;
        v23Tag.Comment := MP3Tags.Comment;

        if MP3Tags.Rating = 0 then
          v23Tag.Rating := 128 // 3 Sterne
        else
        v23Tag.Rating := MP3Tags.Rating;

        for i := 1 to 16 do
        begin
           b := Random(255);
           GUID.Write(b, 1);
        end;

        v23Tag.SetPrivateFrame('WM/WMCollectionID', GUID);
        v23Tag.SetPrivateFrame('WM/WMCollectionGroupID', GUID);

        v23Tag.SetPicture('image/jpeg', 0, '*', PicData);
        v23Tag.WriteToFile(mp3file);

      end else
      begin
        lblMessageVal.Caption := cMP3Error[Error];
      end;
gruss

KodeZwerg 14. Apr 2018 17:53

AW: Cover in WMP Format
 
Zitat:

Zitat von EWeiss (Beitrag 1399246)
Error := MP3ERR_None; //<<<

Du solltest eine Fehlerabfrage einbauen die
Delphi-Quellcode:
error
auch bei einem Fehler aktualisiert.
Entweder hab ich Tomaten auf den Augen, aber ich seh nur in Zeile 1 das
Delphi-Quellcode:
error
gefüttert wird?!

Also so hier in etwa:
Delphi-Quellcode:
 end else
      begin
        Error := MP3ERR_NoFile;
        lblMessageVal.Caption := cMP3Error[Error];
      end;

Gausi 14. Apr 2018 17:59

AW: Cover in WMP Format
 
Eher so:

Delphi-Quellcode:
error := MP3Tags.ReadFromFile(mp3File);
If (error = MP3ERR_None) Then
begin
 // ...
end else
begin
  lblMessageVal.Caption := cMP3Error[Error];
end
Wichtig wäre aber ggf. noch, dass beim Schreiben auch was schief gehen kann. Wenn man den User über alles informieren will, werden solche Prozeduren ein klein wenig verschachtelter.

EWeiss 14. Apr 2018 18:02

AW: Cover in WMP Format
 
Zitat:

Zitat von KodeZwerg (Beitrag 1399247)
Zitat:

Zitat von EWeiss (Beitrag 1399246)
Error := MP3ERR_None; //<<<

Du solltest eine Fehlerabfrage einbauen die
Delphi-Quellcode:
error
auch bei einem Fehler aktualisiert.
Entweder hab ich Tomaten auf den Augen, aber ich seh nur in Zeile 1 das
Delphi-Quellcode:
error
gefüttert wird?!

Also so hier in etwa:
Delphi-Quellcode:
 end else
      begin
        Error := MP3ERR_NoFile;
        lblMessageVal.Caption := cMP3Error[Error];
      end;

jo bin mal wieder blöd heute

Delphi-Quellcode:
      Error := MP3Tags.ReadFromFile(mp3File);
      If Error = MP3ERR_None then
Zitat:

Eher so:
Oops hatte gerade die gleiche Idee ;)

Vielleicht kannst du das ja noch bei einem späteren Update mit berücksichtigen. :)

gruss

KodeZwerg 14. Apr 2018 18:09

AW: Cover in WMP Format
 
Zitat:

Zitat von Gausi (Beitrag 1399248)
Eher so:

:thumb:
Ich hab Delphi grad nicht offen gehabt (wusst nicht das die unit codes übermittelt), nur gesehn das Error nicht gefüttert wird ;-)

EWeiss 14. Apr 2018 18:14

AW: Cover in WMP Format
 
Zitat:

Zitat von KodeZwerg (Beitrag 1399250)
Zitat:

Zitat von Gausi (Beitrag 1399248)
Eher so:

:thumb:
Ich hab Delphi grad nicht offen gehabt (wusst nicht das die unit codes übermittelt), nur gesehn das Error nicht gefüttert wird ;-)

LOL Warum soll es dir anders gehen als mir ;)
Manchmal ist man neben der Rolle.

gruss

KodeZwerg 14. Apr 2018 18:29

AW: Cover in WMP Format
 
Joar, nach'm zweiten mal Lesen hät's mir auch klar sein müssen, steht ja
Delphi-Quellcode:
If (MP3Tags.ReadFromFile(mp3File) = MP3ERR_None) Then
also hat's einen Return Code.
Oje, ich bin heut auch fertig, mir schwirrt der Kopf, ich erstelle so etwas wie PEID was sich auf dessen UserDB.txt beruht aber auch PE+ Dateien unterstützt. Die vielen ?? Auswertungen bereiten mir momentan eine große Sorge aber davon ein ander mal im "User Projekte"-Forum


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 Uhr.
Seite 7 von 9   « Erste     567 89      

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