[VBA] wma-Eigenschaften auslesen und ändern

  • Allgemein

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von roddy.

    [VBA] wma-Eigenschaften auslesen und ändern

    Hallo zusammen,

    es geht darum, die Eigenschaften von wma-Dateien wie z. B. Titel, Interpret, Album etc. auszulesen. Als ich eine wma-Datei mit dem Editor geöffnet habe, habe ich gesehen, dass die Werte im Dateikopf enthalten sind und kann sie auch lesen (davor kommt dann z. B. "WM/Year" und geht bis zu einem doppelten NullCharacter; auf jeden Buchstaben (auch bei "WM/Year") folgt ein NullCharacter). So weit, so gut. Es gibt nun jedoch folgende Probleme:

    1. Die Positionen und die Reihenfolge der verschiedenen Eigenschaften sind immer anders (mit InStr kein Problem). Ich will jedoch nur soviel von der Datei mit dem TextStream-Objekt lesen wie nötig (wegen Dauer und PC-Auslastung). Ich habe zwar eine Grenze festgelegt (32 kB), als ich jedoch gemerkt habe, dass bestimmte Eigenschaften, die vorhanden waren, bei bestimmten Dateien nicht gelesen wurden, musste ich die Grenze erhöhen. Inzwischen bin ich bei einer variablen Grenze, indem ich nach einer bestimmten Zeichenfolge suche. Das klappt zwar meistens, jedoch nicht immer, da manche Dateien die Zeichenfolge im Kopf nur zweimal haben, während die anderen sie dreimal haben. Stoppe ich beim zweiten Finden der Zeichenfolge, werden bei denen mit drei Vorkommen gar keine Eigenschaften ausgelesen. Stoppe ich beim dritten Finden, wird bei denen mit zwei Vorkommen die komplette Datei ausgelesen, was ich ja vermeiden will.

    2. Wenn ich nun einen Wert mit VBA ändern will, muss dieser genausoviele Zeichen haben wie der ursprüngliche Wert (Sonst meldet der Windows Media Player beim Abspielen, dass es sich um eine ungültige Datei handelt). Ich muss also mit Leerzeichen auffüllen bzw. den neuen Wert abschneiden. Wenn eine Eigenschaft noch nicht festgelegt war, kann ich sie nicht hinzufügen, denn ich weiß nicht wo (wie gesagt sind die Positionen und die Reihenfolge immer anders). Außerdem muss ich die komplette Datei neu schreiben (sprich: kopieren und dabei die zu ändernden Werte abändern), wenn ich etwas ändern will, was ich gerne vermeiden würde. Ich will ja nur einen bestimmten Teil ändern.
    Wenn jemand eine Idee hat, wie man die Probleme in den Griff bekommen kann, wäre ich dankbar.

    Kann man vielleicht die Eigenschaften aus bestimmten Bytes direkt auslesen?
    Habe hier im Forum mal einen Beitrag gesehen, jedoch ging es dabei um mp3-Dateien:
    MP3 Eigenschaften auslesen und setzen


    EDIT:

    Für das Auslesen der Dateien habe ich einen Code gefunden:

    WMA Tags lesen

    Was jedoch das Ändern angeht (Problem 2), habe ich noch nichts gefunden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „roddy“ ()

    Hi!

    Mich würd interessieren warum eigentlich WMA? MP3 hat einige Vorteile gegnüber WMA: 1. keine Verschlüsselung möglich, 2. deutlich mehr Geräte, dies abspielen können, 3. ausgereifter - von WMA gibts/gabs regelmäßig neue Versionen, 4. eine Firma wie Microsoft sollte keinen Codec alleine bestimmenm dafür gibts Gruppen wie das MPEG-Forum.

    Vorteile hat WMA nicht wirklich - ich kenn zumindestens keinen.
    Du brauchst das EntwicklerKid Windows Media Encoder 9 oder 10 SDK um die Windows Media Dateien zu bearbeiten. Lass es sein, die Zeichen auf Dateiebene zu verändern. Kannst du eh nur privat anwenden und dann kannst du dir gleich das Entwicklerzeug holen. Denn wenn du es nur privat verwendest, brauchst auch keine Lizenz kaufen.
    Danke für die Anwort, DoSchwob.

    Die Änderung der Eigenschaften mache ich dann wohl doch besser, indem ich die Daten im Windows Media Player ändere. In bestimmten Fällen wäre es mit VB einfacher gewesen, aber mit dem Player kriege ich es wohl auch hin.

    Was mir wichtiger war, war die Sache mit dem Auslesen, aber da habe ich ja was gefunden. Ich habe es zwar noch nicht ausführlich getestet, aber erste Tests zeigen, dass es wohl funktioniert. Sollte ich jedoch wider Erwarten Probleme haben, poste ich die einfach hierrein.

    @Mad Andy:

    Der Windows Media Player war eben schon installiert, als ich den Rechner gekauft habe. Wenn ich gekaufte CDs mit dem Player kopiere, werden standardmäßig WMAs erzeugt. Ich habe bisher noch keine Veranlassung gehabt, das umzustellen. (Habe gerade eben nachgeschaut und gesehen, dass MP3 auch geht :whistling: ) Vielleicht mache ich es ja. Mal sehen.