Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

EWeiss 13. Apr 2018 21:56

AW: Cover in WMP Format
 
Supi ;)
Werde das direkt mal testen.

WOW funktioniert perfekt. Vielen Dank!

Genauso muss es sein ;)
Jetzt den Kram noch irgendwie als Batch Datei ausführen und gut ist.
Das ist dann genau das was ich mir vorgestellt habe.

Du siehst also es hat doch mit den Frames zu tun ;)
btw.. im Post vorher kannst du mein BassVis Projekt laden und es selber mal testen wenn du möchtest.
Eine ID müsste noch für das Rating zuständig sein damit die Sterne noch angezeigt werden.
Muss mich da nochmal schlau machen und vor allem was ich da übergeben muss eine GUID sicherlich nicht.
3 Sterne als Standard sollte reichen

gruss

Gausi 13. Apr 2018 22:21

AW: Cover in WMP Format
 
Aber irgendwas stimmt da doch nicht. Man schreibt eine zufällige Zahl in die Datei, und dann wird das richtige Cover angezeigt? Hä? :gruebel:

Mit dem BassVis Beispiel und dem AlbumArt-Plugin wird bei mir auch immer ein Cover angezeigt. Ein mp3-File und ein Folder.jpg reicht.

Aber gut, wenn es bei dir jetzt klappt, dann klappts. :lol:

Fürs Rating gibt es eigentlich einen Rating-Frame "POPM", der auch für jeden Player einzeln benutzt werden kann, iirc.

EWeiss 13. Apr 2018 22:22

AW: Cover in WMP Format
 
Zitat:

Aber irgendwas stimmt da doch nicht. Man schreibt eine zufällige Zahl in die Datei, und dann wird das richtige Cover angezeigt? Hä?
Ich denke es wird nur nach PRIV: Frame im Tag gesucht ist das Frame vorhanden scheint es das Plugin nicht zu interessieren was da steht.

Zitat:

Ein mp3-File und ein Folder.jpg reicht.
Seltsamer weise bei mir nicht.
Ich benötige das AlbumArtSmall.JPG sonst wird das Cover nicht angezeigt.

Habe da jetzt mal dein Rating hinzugefügt.
Was muss ich da einfügen um auf 3 Sterne zu kommen?

Delphi-Quellcode:
v23Tag.Rating := 3;
so bekomme ich nur einen.

gruss

Gausi 13. Apr 2018 22:25

AW: Cover in WMP Format
 
Rating ist intern ein Byte-Wert. Die 1-5 Sternchen müssen also umskaliert werden auf 1-255 (0 für undefiniert). Aber keine Garantie, dass der WMP das genauso macht.

EWeiss 13. Apr 2018 22:27

AW: Cover in WMP Format
 
Zitat:

Zitat von Gausi (Beitrag 1399193)
Rating ist intern ein Byte-Wert. Die 1-5 Sternchen müssen also umskaliert werden auf 1-255 (0 für undefiniert). Aber keine Garantie, dass der WMP das genauso macht.

Werde mal einige werte versuchen ;)
Danke!

EDIT:
128 sind 3 Sterne!
Ob die Annahme stimmt von der Berechnung her keine Ahnung ;)
Aber so funktioniert es zumindest.

Wäre super wenn du das mit den PRIV: Frames in Nemp addierst könnte dann alle Tags damit abgleichen. :)

gruss

Gausi 13. Apr 2018 22:49

AW: Cover in WMP Format
 
Ich weiß ehrlich gesagt nicht, was ich in Nemp mit den Privaten Frames des WMP anfangen soll. :gruebel: Sinnvoll wäre das ja nur, wenn ich das auch mit sinnvollen Daten befüllen würde. Einfach nur Zufallswerte reinschreiben finde ich nicht sonderlich -ähm- sinnvoll.

Wie gesagt - diese Frames nutzt der WMP für seine eigenen Zwecke. Ein Cover-Bild nicht in jeder Datei zu speichern, sondern nur eine eindeutige ID, über die dann ein Bild zugeordnet werden kann, ist ja prinzipiell eine sinnvolle Sache - das spart in der Summe ordentlich Platz. Aber solange ich nicht weiß, was der WMP da genau erwartet, werde ich da nichts dran rumpfuschen.

Ich wäre auf der anderen Seite auch etwas stinkig, wenn der WMP in mp3-Dateien den PRIV-Frame mit der Kennung "NEMP/Tags" mit Zufalls-Zeichen füllen würde, die mein Player für die erweiterten Tags in der Tagwolke nutzt.

EWeiss 13. Apr 2018 22:57

AW: Cover in WMP Format
 
Zitat:

Einfach nur Zufallswerte reinschreiben finde ich nicht sonderlich -ähm- sinnvoll.
Aber es erfüllt seinen zweck und das reicht mir ;)
Zitat:

Ich weiß ehrlich gesagt nicht, was ich in Nemp mit den Privaten Frames des WMP anfangen soll.
NA ja vielleicht möchtest du deinen Player mal mit meinem BassVis PluginWrapper erweitern.
Dann wäre es Voraussetzung damit die Visualisierungen richtig dargestellt werden.
Andernfalls macht so was ja keinen Sinn bin da etwas penible drin.

Zitat:

Mit dem BassVis Beispiel und dem AlbumArt-Plugin wird bei mir auch immer ein Cover angezeigt. Ein mp3-File und ein Folder.jpg reicht.
Muss das noch berichtigen.

AlbumArt3D das mit den Würfeln benötigt NUR das Folder.jpg.
Aber Bliss um das es eigentlich geht benötigt zusätzlich noch das Albumartsmall.jpg
Probiere es aus und du wirst es sehen.

gruss

Gausi 13. Apr 2018 23:04

AW: Cover in WMP Format
 
Der Gedanke kam mir auch schon. :lol:

Aber die nächste Baustelle bei mir wäre erstmal 64-Bit. Hab da einen an der Hand, bei dem Nemp in die Knie geht, weil die Bib zu groß wird und dann mit meinem stellenweise etwas großzügigen Speicherverbrauchs an die Grenze eines 32-Bit-Prozesses kommt. Vermutlich läuft bei 1.000.000 Titeln dann auch sonst nichts mehr vernünftig, aber das Portieren reizt mich irgendwie. Vor allem um zu gucken, ob meine Mp3FileUtils halbwegs sauber in dieser Hinsicht sind. :pale:

EWeiss 13. Apr 2018 23:09

AW: Cover in WMP Format
 
Zitat:

Zitat von Gausi (Beitrag 1399197)
Der Gedanke kam mir auch schon. :lol:

Aber die nächste Baustelle bei mir wäre erstmal 64-Bit. Hab da einen an der Hand, bei dem Nemp in die Knie geht, weil die Bib zu groß wird und dann mit meinem stellenweise etwas großzügigen Speicherverbrauchs an die Grenze eines 32-Bit-Prozesses kommt. Vermutlich läuft bei 1.000.000 Titeln dann auch sonst nichts mehr vernünftig, aber das Portieren reizt mich irgendwie. Vor allem um zu gucken, ob meine Mp3FileUtils halbwegs sauber in dieser Hinsicht sind. :pale:

Das wäre nicht schlecht.
Nur dir sollte klar sein das alle Plug-Ins zumindest die meisten davon sind in 32Bit geschrieben.
Aber gut es gibt ein Workaround damit 32Bit DLL's mit 64Bit Anwendungen funktionieren siehe "WM_COPYDATA"

Wollte mich nochmal bedanken das du dich meiner angenommen hast :)

Zitat:

ob meine Mp3FileUtils halbwegs sauber in dieser Hinsicht sind
Ich finde die klasse und einfach zu handhaben.
Verwende diese in meinem Player Shot auf der ersten Seite vom Thread ;)

Lasse das Example von BassVis mal online vielleicht kann es ja jemand brauchen.

gruss

KodeZwerg 13. Apr 2018 23:36

AW: Cover in WMP Format
 
Das freut mich für Dich das es letzten Endes, obwohl Du schon aufgegeben hattest, sich doch noch alles zum Guten gewendet hat. Nachdem ich mir das SetPic() angeschaut habe verstehe ich auch wieso ich hinter den Zahlen nicht wirklich ein Muster erkennen konnte :)

EWeiss 13. Apr 2018 23:40

AW: Cover in WMP Format
 
Zitat:

Zitat von KodeZwerg (Beitrag 1399200)
Das freut mich für Dich das es letzten Endes, obwohl Du schon aufgegeben hattest, sich doch noch alles zum Guten gewendet hat. Nachdem ich mir das SetPic() angeschaut habe verstehe ich auch wieso ich hinter den Zahlen nicht wirklich ein Muster erkennen konnte :)

Jo Danke ;)
Mit eurer Hilfe.

Alleine wäre ich wohl aufgeschmissen gewesen.
Habe alles gerne perfekt ohne das andere Programme sich da einmischen. ;)

gruss

Gausi 14. Apr 2018 07:14

AW: Cover in WMP Format
 
Falls du meinen Codeschnipsel produktiv einsetzt, dann denk aber daran, dass du in den neu erstellten ID3-Tag noch weitere Informationen vom alten einfügst (mindestens noch Jahr, Kommentar, Genre). Und den alten Tag nur dann durch neuen, WMP-Kompatiblen ersetzt, wenn es nötig ist, also durch eine Abfrage der Version

Delphi-Quellcode:
if MP3tags.Version.Major = 3 then
  // vorhandenen Tag schreiben, WMP kommt damit klar
  MP3tags.WriteToFile(mp3File)
else
  // neu gebauten Tag schreiben. Dabei gehen möglicherweise Daten verloren
  v23Tag.WriteToFile(mp3file);
Dass Daten möglicherweise verloren gehen liegt daran, dass ich in dem Codeschnipsel die "dreckige" Variante für die Konvertierung von 2.3 nach 2.4 gewählt habe, und nicht jeden tatsächlich vorhandenen Frame aktualisiere.

EWeiss 14. Apr 2018 08:13

AW: Cover in WMP Format
 
Zitat:

Zitat von Gausi (Beitrag 1399207)
Falls du meinen Codeschnipsel produktiv einsetzt, dann denk aber daran, dass du in den neu erstellten ID3-Tag noch weitere Informationen vom alten einfügst (mindestens noch Jahr, Kommentar, Genre). Und den alten Tag nur dann durch neuen, WMP-Kompatiblen ersetzt, wenn es nötig ist, also durch eine Abfrage der Version

Delphi-Quellcode:
if MP3tags.Version.Major = 3 then
  // vorhandenen Tag schreiben, WMP kommt damit klar
  MP3tags.WriteToFile(mp3File)
else
  // neu gebauten Tag schreiben. Dabei gehen möglicherweise Daten verloren
  v23Tag.WriteToFile(mp3file);
Dass Daten möglicherweise verloren gehen liegt daran, dass ich in dem Codeschnipsel die "dreckige" Variante für die Konvertierung von 2.3 nach 2.4 gewählt habe, und nicht jeden tatsächlich vorhandenen Frame aktualisiere.

Danke, ja das habe ich bereits getan.
Habe bei 6000 Titeln das PRIV: Frame entfernt.
Mache die Anwendung fertig und lasse die drüber laufen.

Delphi-Quellcode:
        v23Tag.Artist := MP3Tags.Artist;
        v23Tag.Album := MP3Tags.Album;
        v23Tag.Title := MP3Tags.Title;
        v23Tag.Year := MP3Tags.Year;
        v23Tag.Track := MP3Tags.Track;
        v23Tag.Genre := MP3Tags.Genre;
        v23Tag.Rating := 128;

        for i := 1 to 16 do
        begin
           b := Random(255);
           GUID.Write(b, 1);
        end;
Anbei noch das Tool desiccate compiliert und für VS2017 angepasst.
Damit können private Frames, Comments, Ufid's aus dem Tag entfernt werden.
Es ist sehr zuverlässig und hat bei mir noch keinen Tag zerstört.

gruss

EWeiss 14. Apr 2018 10:37

AW: Cover in WMP Format
 
Ich denke das dürfte als Warnung ausreichen.

gruss

EWeiss 14. Apr 2018 13:09

AW: Cover in WMP Format
 
Hier ist das Ergebnis wer's braucht ;)

Das was in der Listbox ROT ausgelegt ist wurde nicht verändert.
Deshalb nicht weil kein AlbumArtSmall.jpg im Pfad gefunden wurde.

@Gausi habe deine mp3FileUtil im Archiv addiert hoffe das geht in Ordnung, wenn nicht werde ich sie natürlich entfernen.

gruss

DP-Maintenance 14. Apr 2018 14:12

Dieses Thema wurde am "14. Apr 2018, 15:12 Uhr" von "Daniel" aus dem Forum "Klatsch und Tratsch" in das Forum "Multimedia" verschoben.

Maekkelrajter 14. Apr 2018 15:40

AW: Cover in WMP Format
 
Der Thread hat ja einen hochinteressanten Verlauf genommen, nachdem das eigentliche Problem herausgearbeitet worden war. Die 'PRIV' - Frames hatte ich bisher überhaupt nicht auf dem Schirm. Daraufhin habe ich mal meinen eigenen MP3-Bestand mit dem von dir verlinkten Tool iDesiccate durchforstet und etliche Dateien mit solchen Frames gefunden. Wahrscheinlch sind sie irgendwann einmal durch einen nicht ausreichend restriktiv konfigurierten WMP kontaminiert worden :shock:
In meinem eigenen Programm, dessen Kernfunktion die Anonymisierung von Audiodateien (MP3 und M4A) ist, sind diese PRIV-Frames zum Glück irrelevant. Dort werden die wichtigsten Tags incl. Cover ausgelesen und gesichert. Anschließend werden alle ID3 -Tags komplett aus der Datei entfernt. Zum Schluss werden nur die ausgewählten Tags in die Datei zurückgeschrieben. Damit sollte aller kryptischer Mist entsorgt sein (hoffe ich).

Dein Projekt habe ich mir mal in die IDE geladen und angesehen. Testen werde ich das Programm allerdings (vorläufig) nicht, alldieweil ich auf absehbare Zeit keine WMP-Plugins einzusetzen gedenke. :wink:

Eine Anmerkung kann ich mir allerdings nicht verkneifen: Das Englisch in dem Readme-Text ist, vorsichtig ausgedrückt, verbesserungsfähig. Vorschläge:

Delphi-Quellcode:
 
  pString := 'the application writes PRIV: Frames to MP3 Tag' + #13#10 +               
    'this is necessary so that the visual plugins for WMP work properly' + #13#10 +   // Vorschlag: 'necessary to make the visual...'      
    'without having create the Mp3 tag via WMP (Windows Media Player)' + #13#10 +     // Vorschlag: 'without having created...'
    'a file called AlbumArtSmall.jpg is required in the Search path' + #13#10 +
    #13#10 +
    'WARNING: after execute the function over DoIt, process can''t be stopped' + #13#10 + // Vorschlag: 'after executing...'
    #13#10 +
    'Artist' + #13#10 +
    'Album' + #13#10 +
    'Title' + #13#10 +
    'Year' + #13#10 +
    'Track' + #13#10 +
    'Genre' + #13#10 +
    'Comment' + #13#10 +
     #13#10 +
    'are not changed' + #13#10 +
    'if your use more entries in the Mp3 tag' + #13#10 +
    'please close the application, or your data will be lost!';
Ich bitte um Nachsicht, dass ich den Oberlehrer in mir mal wieder nicht im Zaum halten konnte :oops:

Gruß LP

EWeiss 14. Apr 2018 15:54

AW: Cover in WMP Format
 
Zitat:

Eine Anmerkung kann ich mir allerdings nicht verkneifen: Das Englisch in dem Readme-Text ist, vorsichtig ausgedrückt, verbesserungsfähig. Vorschläge:
Danke für die Berichtigung.
Aber muss dazu sagen.. habe nie English in der Schule gelernt das bisschen das ich kann
habe ich mir mit der zeit angeeignet Gewohnheit eben wenn man viel English lesen muss gezwungener weise.

Habe ja hier schon gesagt was ich von meinem English halte ;)
https://www.delphipraxis.net/1399132-post20.html

Aber kein Problem..

Hier das Update habe noch zwei kleine Probleme behoben.
btw.. Habe es nach Multimedia verschieben lassen da es ja jetzt darum geht.
Danke an die Admins!


gruss

Gausi 14. Apr 2018 16:23

AW: Cover in WMP Format
 
zu den PRIV-Frames nochmal: Dass dadurch der Fehler hier behoben werden konnte, liegt an der Schusseligkeit des Plugin-Entwicklers. Wenn ohnehin ein Fallback auf das normale Cover "AlbumArtSmall.jpg" genommen wird, dann sollte dieser Fallback auch genommen werden, wenn im ID3-Tag keine GUID für das Coverart gefunden werden kann. Dass man das Plugin fixen kann, in dem man Datenmüll in die Datei schreibt ist einfach nur ... kaputt.

Ansonsten haben PRIV-Frames ja durchaus ihren Nutzen. Sie können allerdings in der Tat bei der Weitergabe persönliche Daten enthalten, das ist richtig. Das gilt aber auch für andere Möglichkeiten, zusätzliche Daten in den ID3-Tag zu schreiben. Einige Tagger/Ripper/Player nutzen diverse "Usertext"-Frames, andere mehrere "Kommentar"-Frames. Und der WMP ist nicht der einzige Player, der die PRIV-Frames nutzt.

EWeiss 14. Apr 2018 16:35

AW: Cover in WMP Format
 
Zitat:

Zitat von Gausi (Beitrag 1399240)
zu den PRIV-Frames nochmal: Dass dadurch der Fehler hier behoben werden konnte, liegt an der Schusseligkeit des Plugin-Entwicklers. Wenn ohnehin ein Fallback auf das normale Cover "AlbumArtSmall.jpg" genommen wird, dann sollte dieser Fallback auch genommen werden, wenn im ID3-Tag keine GUID für das Coverart gefunden werden kann. Dass man das Plugin fixen kann, in dem man Datenmüll in die Datei schreibt ist einfach nur ... kaputt.

Ansonsten haben PRIV-Frames ja durchaus ihren Nutzen. Sie können allerdings in der Tat bei der Weitergabe persönliche Daten enthalten, das ist richtig. Das gilt aber auch für andere Möglichkeiten, zusätzliche Daten in den ID3-Tag zu schreiben. Einige Tagger/Ripper/Player nutzen diverse "Usertext"-Frames, andere mehrere "Kommentar"-Frames. Und der WMP ist nicht der einzige Player, der die PRIV-Frames nutzt.

Ja auch ITune (Apple) tun das bei ihren Urheberrecht geschützten MP3 Dateien.

btw.. Hab da noch ein Problem.
Ich habe mp3Tags in Version ID3_v1
Dein mp3fileUtils meldet mir aber das kein Tag gefunden wurde aber er ist definitiv als ID3_v1 enthalten.

Wollte jetzt noch deine error messagen an einem String (Label) übergeben wie?
Sind ja enums.

gruss

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

EWeiss 14. Apr 2018 18:56

AW: Cover in WMP Format
 
Zitat:

zu den PRIV-Frames nochmal: Dass dadurch der Fehler hier behoben werden konnte, liegt an der Schusseligkeit des Plugin-Entwicklers. Wenn ohnehin ein Fallback auf das normale Cover "AlbumArtSmall.jpg" genommen wird, dann sollte dieser Fallback auch genommen werden, wenn im ID3-Tag keine GUID für das Coverart gefunden werden kann. Dass man das Plugin fixen kann, in dem man Datenmüll in die Datei schreibt ist einfach nur ... kaputt.
Ja da muss ich dir im vollen umfang recht geben.

Ohne AlbumArtSmall funktioniert es nicht.
Ohne PRIV auch nicht.

Also wenn ich schon auf die platte zugreife warum dann noch eine Umleitung um nach den PRIV Frames zu suchen.
Irgendwie eine Verdummung der Leute oder ein versuch dieses Plugin außerhalb WMP nicht nutzen zu können.
Das Cover aus den Tags nimmt er auch nicht.

gruss

KodeZwerg 14. Apr 2018 19:15

AW: Cover in WMP Format
 
Mein WMP kann nicht telefonieren, Mich würde interessieren was mit einer von Dir präparierten Datei passiert, also Bliss Kompatibel mit neuem ID3 Header und die dann durch den WMP getaggt wird.
Ist das mp3 danach Schrott? Ist nur der Header zerschossen? Wird das Cover wegradiert? Ist alles Okay? und solche Dinge halt.
Wenn man den ID3 Tag samt PRIV entfernt, also nurnoch Audio hat, diese cleane datei vierfach haben und zu verschiedenen Zeitpunkten von WMP einzeln taggen lassen, einmal mit Cover, einmal ohne, das ganze zweimal. Haben alle vier mp3's die gleiche GUID zugewiesen bekommen?
edit
Um zu Erfahren in wie fern eine Random() generierte GUID schädlich sein kann, darauf bezieht sich das erstere

EWeiss 14. Apr 2018 19:25

AW: Cover in WMP Format
 
Zitat:

Mein WMP kann nicht telefonieren, Mich würde interessieren was mit einer von Dir präparierten Datei passiert, also Bliss Kompatibel mit neuem ID3 Header und die dann durch den WMP getaggt wird.
Ist das mp3 danach Schrott? Ist nur der Header zerschossen? Wird das Cover wegradiert? Ist alles Okay? und solche Dinge halt.
Ich habe die kleine Anwendung geschrieben gerade deshalb weil ich WMP nicht nutzen will.
Deshalb ist mir das relativ egal da ich meine eigenen Abspieler habe.
Der andere ein fast vollständiger Clone von Winamp. 2.9
Also daran soll es nicht liegen ;)
Zitat:

Haben alle vier mp3's die gleiche GUID zugewiesen bekommen?
Keine Ahnung.. Wie gesagt ist mir relativ egal.

Leute die ihre Sammlung pflegen werden diese bestimmt nicht mit WMP taggen.

gruss

KodeZwerg 14. Apr 2018 19:56

AW: Cover in WMP Format
 
Ist ja richtig, Dein Programm sieht Spitze aus und funktioniert bestimmt auch hervorragend, Nemp genauso (und alle die ich hier vergessen hab zu erwähnen), darum ging es mir aber gerade nicht sondern um's WMP Format an sich. Ich wollt nochmal zum Thread Title.
Ich hab da halt wie Gausi meine Bedenken weil Dein Tool ja im WMP PRIV Bereich eingreift, ja Du hast 'ne Warnung drinnen damit es Dir egal sein kann, ich fragte halt einfach mal so in den Raum hinein, weil mich da doch ein gewisses feeling gepackt hat und für mich so noch nicht ganz abgeschlossen war, das Thema WMP Format.

Maekkelrajter 14. Apr 2018 22:46

AW: Cover in WMP Format
 
@ Eweiss:

Gerade habe ich mir dein Tool PrivFramesWriter nochmal genau angeschaut. Dabei fiel mir auf, dass du eine Stringlist instantiierst, aber nicht freigibst:
Delphi-Quellcode:
procedure TForm1.btnSearchClick(Sender: TObject);
var
  List: TStringList;
  IntI: Integer;
  Mask: array[0..0] of string;
begin
  edSearchpath.Text := GetFolder(CSIDL_DRIVES, 'Select search path');
  lstSearch.Clear;

  If edSearchpath.Text <> '' then
  begin
     Mask[0] := '.mp3';
     List := TStringList.Create;

     FindMediaFiles(List, edSearchpath.Text, Mask, True);
     lblCount.Caption := IntToStr(List.Count);
     ProgressCounter:= List.Count;
     lblProgress.Caption := IntToStr(ProgressCounter);

     if List.Count > 0 then
     begin
       btnDoIt.Enabled := true;
       Setlength(failed, List.Count);
     end;

     for IntI := 0 to List.Count - 1 do
       lstSearch.Items.Add(List[IntI]);

  end;
end;

Sollte das nicht so aussehen:

Delphi-Quellcode:
procedure TForm1.btnSearchClick(Sender: TObject);
var
  List: TStringList;
  IntI: Integer;
  Mask: array[0..0] of string;
begin
  edSearchpath.Text := GetFolder(CSIDL_DRIVES, 'Select search path');
  lstSearch.Clear;
  List := TStringList.Create;
  try
    If edSearchpath.Text <> '' then
    begin
      Mask[0] := '.mp3';
      FindMediaFiles(List, edSearchpath.Text, Mask, True);
      lblCount.Caption := IntToStr(List.Count);
      ProgressCounter:= List.Count;
      lblProgress.Caption := IntToStr(ProgressCounter);
      if List.Count > 0 then
      begin
        btnDoIt.Enabled := true;
        Setlength(failed, List.Count);
      end;
      for IntI := 0 to List.Count - 1 do
      lstSearch.Items.Add(List[IntI]);
    end;
  finally
    FreeAndNil(List)
  end;
end;
Gruß LP

EWeiss 15. Apr 2018 09:25

AW: Cover in WMP Format
 
Zitat:

Gerade habe ich mir dein Tool PrivFramesWriter nochmal genau angeschaut.
Unser Tool! :)

Auf jeden fall hast du recht. ;)

Keine Entschuldigung, aber im Eifer des Gefechts habe ich nur auf das Ergebnis geachtet als darauf Programmtechnisch alles korrekt zu machen.
List wird ja nach dem addieren zur Listbox nicht mehr benötigt muss also Frei gegeben werden.

Danke für die Info.

EDIT:
Würde aber die TStringlist erst erstellen wenn sie auch benötigt wird.
Warum ein Objekt initialisieren wenn ich damit nichts tun kann, also wenn das suchen abgebrochen wird.
Macht also nur sinn wenn ich anschließend damit auch Arbeiten will\kann.

gruss

EWeiss 15. Apr 2018 09:36

AW: Cover in WMP Format
 
Korrigiert so wäre es richtig.

Delphi-Quellcode:
procedure TForm1.btnSearchClick(Sender: TObject);
var
  List: TStringList;
  IntI: Integer;
  Mask: array[0..0] of string;
begin
  edSearchpath.Text := GetFolder(CSIDL_DRIVES, 'Select search path');

  If edSearchpath.Text <> '' then
  begin
     if lstSearch.Count > 0 then
       lstSearch.clear;
     try
       List := TStringList.Create;
       Mask[0] := '.mp3';

       FindMediaFiles(List, edSearchpath.Text, Mask, True);
       lblCount.Caption := IntToStr(List.Count);
       ProgressCounter:= List.Count;
       lblProgress.Caption := IntToStr(ProgressCounter);

       if List.Count > 0 then
       begin
         btnDoIt.Enabled := true;
         Setlength(failed, List.Count);
       end;

       for IntI := 0 to List.Count - 1 do
         lstSearch.Items.Add(List[IntI]);
     finally
       FreeAndNil(List);
     end;
  end;
end;
Man könnte das alles noch etwas schöner machen.
Zum Beispiel wenn ein Fehler auftritt (Tag nicht gefunden)
Die aktuelle Zeile Gelb färben so das man den Pfad bzw. die Datei erkennen kann die keinen gültigen 2.3 Tag besitzt.
Habe das mal versucht aber bei mir wird diese Zeile immer wieder mit grün über pinselt.

Nun bin kein VCL Freak eher das Gegenteil aber das ist ja bekannt.

Noch ein Pic für @KodeZwerg

gruss

DeddyH 15. Apr 2018 10:33

AW: Cover in WMP Format
 
So wäre es richtiger ;)
Delphi-Quellcode:
List := TStringList.Create;
try
  (* Mit der Liste arbeiten *)
finally
  List.Free; //reicht bei lokalen Variablen völlig aus
end;

EWeiss 15. Apr 2018 10:43

AW: Cover in WMP Format
 
Zitat:

Zitat von DeddyH (Beitrag 1399274)
So wäre es richtiger ;)
Delphi-Quellcode:
List := TStringList.Create;
try
  (* Mit der Liste arbeiten *)
finally
  List.Free; //reicht bei lokalen Variablen völlig aus
end;

oops jep vor Try ;)
Danke dann ist das jetzt geklärt ;)

Leider kann ich das alte Archiv nicht mehr löschen destotrotz hier das Update.

gruss

KodeZwerg 15. Apr 2018 10:55

AW: Cover in WMP Format
 
Zitat:

Zitat von EWeiss (Beitrag 1399272)
Noch ein Pic für @KodeZwerg

Alter Falter, dagegen sieht mein WinAMP (Version 2.04 weil's am schnellsten lädt) total mickrig aus.
Diskobeleuchtung, Überall Boxen, Dein Plugin, Mann-O-Mann, mächtig Gewaltig Egon! (spruch als Olsenbande)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.
Seite 2 von 3     12 3      

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