Autor Beitrag
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 28.01.08 16:18 
Ein Problem dabei ist es leider, dass man das Feld auch mal absichtlich leer lassen kann.

Ein Beispiel:
  • Das Konvertierungsprogramm (LAME o. ä.) speichert beide ID3-Tags. Beide heißen "Unbekannt", weil man nichts eingegeben hat.
  • Mit einem anderen Programm (MediaPlayer etc.) leert man den Tag, weil es nicht schön aussieht, wenn da "Unbekannt" steht. Dieses Programm speichert aber nur die ID3V2-Version.
  • Mit dem eigenen Programm soll man entscheiden, ob man einen leeren String nimmt, oder eben das "Unbekannt".
Die Wahl ist schwierig, und nicht unbedingt erwünscht.

Hat jemand eine Lösung? Wie macht ihr denn das? Und wie sieht's beim Schreiben aus?


Zuletzt bearbeitet von Yogu am Mo 28.01.08 17:11, insgesamt 1-mal bearbeitet
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 28.01.08 16:59 
Das hat jetzt aber nichts mit dieser Unit zu tun, oder? :gruebel:

Wenn das nicht nur ne Frage nebenher war, dann würde ich das in ein eigenes Topic abtrennen. Ansonsten würde ich das hier einfach ignorieren :mrgreen:

_________________
We are, we were and will not be.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 28.01.08 17:12 
Ok, ok, war nicht so wichtig. :|
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 01.02.08 19:54 
Habe gerade mal eine korrigierte Version online gesetzt, bei der der Fehler in der Funktion GetPaddingSize behoben ist, der bei manchen Anwendungen zu einer Exception führte. Programme, die mit der alten Version laufen, müssen nicht unbedingt neu kompiliert werden - der Fehler tritt bei einem Programm entweder immer oder gar nicht auf - kommt drauf an, was man programmiert hat. ;-)

Download im ersten Beitrag oder auf www.gausi.de/delphi/mp3fileutils.php

_________________
We are, we were and will not be.


Zuletzt bearbeitet von Gausi am Mo 13.10.08 19:56, insgesamt 1-mal bearbeitet
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 09.06.08 16:26 
Habe gerade mal eine neue Version hochgeladen (Version 0.4). Die ist noch im Beta-Stadium, also mit Vorsicht zu genießen. Ich habe bisher beim Testen keine Probleme festgestellt, wenn man mal davon absieht, dass gewisse Schreibeinstellungen auf "Level 3" (siehe Doku/Demos) dazu führen, dass sich das eine oder andere Programm am Tag verschluckt (Winamp, WMP, TagIt, Mp3Tag, Mp3-TagStudio, Mediamonkey, Nemp, ... eigentlich habe ich keins gefunden, was immer funktioniert). Das liegt imho aber an den Programmen, nicht an mir. :mrgreen:

Download im ersten Beitrag oder auf www.gausi.de/delphi/mp3fileutils.php

_________________
We are, we were and will not be.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 13.10.08 19:59 
Kleines Mini-Update. Da sich fast keiner über Bugs beschwert hat, denke ich, dass man das Beta rausnehmen kann. Einen Bug habe ich auch entfernt, und ein paar andere kleine Änderungen vorgenommen.

Wer die Unit nutzt, um auch Tracknummern aus dem ID3v2-Tag anzuzeigen, sollte auf die neue Version updaten. ;-)

Download im ersten Beitrag oder auf www.gausi.de/delphi/mp3fileutils.php

_________________
We are, we were and will not be.
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Sa 29.11.08 17:18 
Steht in der TID3v2.Artist der Albuminterpret oder der Einzelinterpret drin?
Kann das hier grad leider nicht ausprobieren!

_________________
1405006117752879898543142606244511569936384000000000.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 29.11.08 17:32 
Ich bin auch nach dieser Diskussion nach wie vor der Meinung, dass es sowas wie den Albuminterpreten nicht unbedingt gibt, aber ok. Laut user profile iconDunkel schreibt Winamp dafür den TPE2-Frame, der laut ID3v2-Spezifikationen für "Band/Orchestra/Accompaniment" steht. Wenn man das mit Albuminterpret übersetzen möchte - ok.

Diese Information sollte man mit
ausblenden Delphi-Quelltext
1:
myAlbumInterpret := myID3v2Tag.GetText(IDv2_BANDACCOMPANIMENT);					
bekommen. Ansonsten liefert TID3v2.Artist den Interpreten des einzelnen Stückes - so wie es auch Sinn macht.

_________________
We are, we were and will not be.
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Sa 29.11.08 17:44 
wieso macht das sinn, wenn ich doch nach Interpreten/Alben sortiere, und dann son Various Artists-Album dabei hab?

_________________
1405006117752879898543142606244511569936384000000000.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 29.11.08 17:53 
Wenn ich wissen möchte, wer ein Lied singt, dann möchte ich da nicht "VA" als Antwort haben, weil das Lied zufällig auf der neuen Bravo-Hits drauf ist, sondern ich möchte wissen, wer das singt. Deswegen macht es Sinn, als Artist den Einzelinterpreten zu liefern.

Wenn man das Lied im Kontext eines Albums sehen möchte, kann man immer noch IDv2_BANDACCOMPANIMENT benutzen.

_________________
We are, we were and will not be.
Gravitar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 41

Win XP
D6 Ent
BeitragVerfasst: Fr 05.12.08 13:18 
Titel: Auch joinen von mp3s möglich
Hi,

tolle Unit, nimmt mir viel arbeit ab.

Beim durchscrollen habe ich mich gefragt, ob man vorhandene v1 oder v2-Tags aus einer mp3 auch löschen kann (nicht nur die Tags auf "Null" setzen, sondern komplet den Datenblock löschen).

Hintergrund ist, dass ich mehrere mp3s in eine große mp3 zusammenführen möchte. Natürlich hat jede einzelne mp3 v1 und/oder v2-Tags. Damit die neue "große" mp3 nun nicht hunderte von id3-Tags enthält, wäre ein vorheriges Löschen nicht schlecht.

Unterstützt deine Unit dies auch?

Gruß, Andreas
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 05.12.08 13:24 
Ja, dafür gibt es jeweils die Methoden RemoveFromStream und RemoveFromFile bei den beiden Klassen für ID3v1 und v2-Tag.

_________________
We are, we were and will not be.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 28.12.08 18:00 
Hier gabs jetzt auch ein kleines Update: Mp3FileUtils 0.4a

Einzige Änderung: Bei UTF-16-kodierten Textframes mit BOM und Byteorder FE FF wurde das letzte Zeichen im Frame überlesen. Jetzt nicht mehr.
tartare
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP SP2, WIN Vista Home Professional
Delphi 7/2009, C#, C++(VS 2005 Express)
BeitragVerfasst: Mo 19.01.09 02:56 
hi, war immer sehr zu frieden mit den MP3FileUtils, aber jetz in delphi 2009 gibts nur noch fehler und warnungen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
[DCC Warnung] Id3v2Frames.pas(1092): W1000 Symbol 'UTF8Decode' ist veraltet : 'Use UTF8ToWideString or UTF8ToString'
[DCC Warnung] Id3v2Frames.pas(1092): W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'RawByteString'
[DCC Hinweis] MP3FileUtils.pas(296): H2365 Schreibweise der Überschreiben-Methode TID3v1Tag.destroy muss exakt ihrem Vorfahren TObject.Destroy entsprechen
[DCC Hinweis] MP3FileUtils.pas(734): H1054 You should change the default rating description for your projects
[DCC Warnung] MP3FileUtils.pas(777): W1050 WideChar in Set-Ausdrücken auf ByteChar verkürzt.  Ziehen Sie die Verwendung der Funktion 'CharInSet' aus der Unit 'SysUtils' in Betracht.
[DCC Fehler] MP3FileUtils.pas(981): E2008 Inkompatible Typen
[DCC Fehler] MP3FileUtils.pas(982): E2008 Inkompatible Typen
[DCC Fehler] MP3FileUtils.pas(983): E2008 Inkompatible Typen


und das is nur ein kleiner auszug...kann ich da irgendwie etwas mit meinen compilereinstellungen verändern oder warum gibts da auf einmal so große unterschiede, wenn in Delphi 7 das ganze einwandfrei kompiliert wird? würde die unit echt gerne weiterbenutzen....

mfg tartare

_________________
Ich leb in meiner eigenen Welt, aber das is ok, da kennt man mich.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 19.01.09 08:44 
Der Unterschied ist, dass in Mp3FileUtiles viel mit Strings gearbeitet wird, und in Delphi2009 ist ein String nicht mehr ein AnsiString, sondern ein WideString (oder UnicodeString?).

Da ich selber kein Delphi2009 habe, kann ich auch noch kein Update Delphi2009 kompatibles Update rausbringen. Ob es reicht, alle Strings explizit durch AnsiStrings zu ersetzen, weiß ich nicht.

_________________
We are, we were and will not be.
tartare
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP SP2, WIN Vista Home Professional
Delphi 7/2009, C#, C++(VS 2005 Express)
BeitragVerfasst: Mo 19.01.09 17:10 
OK Problem gelöst: einfach alle array of char in array of AnsiChar umgewandelt....

_________________
Ich leb in meiner eigenen Welt, aber das is ok, da kennt man mich.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 19.01.09 18:55 
user profile icontartare hat in etwa geschrieben:
Jippieh, es kompiliert - wir können ausliefern!


Vorsicht! :mahn: In den ID3Tags können viele verschiedene Textformate auftreten. UTF8, Ansii, sowie UTF16 mit und ohne BOM. Intern nutzt Mp3FileUtils teilweise Methoden, um das eine in das andere umzuwandeln, die mit einer bloßen Umdeklaration von Array of Char nicht behoben sein dürften. Zum Beispiel auch autoamtische Typcasts von WideString zu String, die mit Delphi2009 nicht mehr funktionieren. Auch die automatische Zeichensatzerkennung bei Verwendung von DIConverters dürfte in Delphi2009 nicht unbedingt die gewünschten Ergebnisse liefern.

Ich rate dringend davon ab, eine solche einfache Modifikation auf echte Daten loszulassen und/oder ein Programm zu verteilen, welches nicht ausdrücklich als Beta-Version gekennzeichnet ist.

Es könnte sein, dass Mp3-Dateien dadurch irreparabel beschädigt werden können. Ok, du wärest damit in guter Gesellschaft, aber das muss ja nicht sein.

Ich verlinke einfach mal nach Holland rüber. Der Autor hat mich vor einiger Zeit mal angeschrieben, weil er Teile von Mp3FileUtils (hauptsächlich den MPEG-Teil, wenn ich das richtig überblickt habe) übernommen hat für seine Delphi2009-ID3Tag-Bibliothek. Inwiefern der Rest darin was taugt, weiß ich allerdings nicht. ;-)

_________________
We are, we were and will not be.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 23.01.09 22:58 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Vorsicht! :mahn: In den ID3Tags können viele verschiedene Textformate auftreten. UTF8, Ansii, sowie UTF16 mit und ohne BOM. Intern nutzt Mp3FileUtils teilweise Methoden, um das eine in das andere umzuwandeln, die mit einer bloßen Umdeklaration von Array of Char nicht behoben sein dürften. Zum Beispiel auch autoamtische Typcasts von WideString zu String, die mit Delphi2009 nicht mehr funktionieren.


Ergibt imho kein Problem. Ich müsste mir mal TurboDelphi wieder installieren,. aber ich habe in Erinnerung, wenn man sich mal von String durchklickt auf dessen Definition stößt man auch auf String=AnsiString. Wenn man also AnsiString statt String macht, dürfte es keine Änderungen ergeben. Bei Char das gleiche. Da du damit wieder mal AnsiChar und mal WideChar hast, dürfte auch die konvertierung funkltionieren. Im Prinzip dürfte der erzeuge Code unter D2009 zu dessen Vorgängern inhaltlich gleich sein ;).

Btw: Installier dir doch die D2009-Demo in einer VM, dann kannste es hin und wieder einmal probieren ohne deinen Rechner mit einer Demo zu "versauen" ;)
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 24.01.09 10:55 
Ja, das mag sein. Aber nur die einzige Änderung mit dem Array of Char, damit es keine Compilierfehler mehr gibt, reicht mit sehr hoher Wahrscheinlichkeit nicht aus. ;-)

Außerdem weiß ich nicht, wie sich die optional verwendbare Fremdunit (DiConverters) damit verträgt.

_________________
We are, we were and will not be.
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 09.04.09 15:53 
Eine neue Version (0.5) ist draußen. Änderungen im ersten Posting.

Im Wesentlichen ist der Code jetzt kompatibel Delphi 2009, und eine der optional verwendbaren Zusatzunits, die wahrscheinlich kein Mensch außer mir benutzt hat, ist rausgeflogen. Die Funktion dieser Unit wird jetzt (wenn auch nicht ganz) von einer API-Funktion erledigt, was das ganze natürlich etwas einfacher macht.

Unter Delphi 2007 oder früher können weiterhin die TNT-Controls für Unicode-Dateizugriff benutzt werden, unter Delphi 2009 ist das natürlich sinnfrei.

Die im ersten Posting verlinkten Demos sind aktuell mit der D2009 Trial kompiliert - es kann daher sein, dass die bald (d.h. Ende des Monats) nicht mehr laufen. Sie werden ersetzt, wenn die Vollversion da ist.

_________________
We are, we were and will not be.