wma Tag auslesen und ändern

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Arrag0n
Beiträge: 32
Registriert: 24.06.2005 20:49
Wohnort: Austria
Kontaktdaten:

wma Tag auslesen und ändern

Beitrag von Arrag0n »

Hallo
Ich bin neu auf diesem Board und möchte mit PB einen netten kleinen wma Player programmieren.
Ich verwende zum abspielen die FMOD dll. :allright:
Hab irgendwo gelesen das FMOD selber die Tags auslesen und schreiben kann hab aber keine relevanten beispiele gefunden.
Villeicht kann mir hier jemand helfen? :|
Benutzeravatar
Arrag0n
Beiträge: 32
Registriert: 24.06.2005 20:49
Wohnort: Austria
Kontaktdaten:

wma Tag auslesen und ändern

Beitrag von Arrag0n »

Anscheinend hat noch nie jemand versucht einen wma Tag auszulesen.
Jedenfalls möchte ich mich für die zahlreichen Anregungen und Beiträge bedanken.

:( :( :( :( :(
Aus den Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen.
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Hallo,

hier ist eine Procedure aus meinem PixPlayer, damit lese ich die Tags aus:

Code: Alles auswählen

Procedure GetFmodTags(stream)
  *numinfo = AllocateMemory(1)
  If FSOUND_Stream_GetNumTagFields(stream, *numinfo)
    For num = 0 To PeekL(*numinfo) - 1
      *tagtype = AllocateMemory(32)
      *name = AllocateMemory(32) 
      *value = AllocateMemory(32)
      *length = AllocateMemory(32)
      FSOUND_Stream_GetTagField(hstream, num, *tagtype, *name, *value, *length)
      
      If PeekL(*tagtype) = #FSOUND_TAGFIELD_ID3V2
        If PeekS(PeekL(*value)) = "" And Mid(LCase(PeekS(PeekL(*name))), 0, 1) = "t"
          offset = 1
        ElseIf Mid(PeekS(PeekL(*name)), 0, 4) = "COMM" And PeekL(*length) > 8
          offset = 8
        EndIf
        Select LCase(PeekS(PeekL(*name)))
          Case "tit2"
            FileTag\Title = PeekS(PeekL(*value) + offset)
          Case "tpe1"
            FileTag\Artist = PeekS(PeekL(*value) + offset)
        EndSelect
      ElseIf PeekL(*tagtype) = #FSOUND_TAGFIELD_ASF
        Select LCase(PeekS(PeekL(*name)))
          Case "title"
            FileTag\Title = PeekS(PeekL(*value))
          Case "author"
            FileTag\Artist = PeekS(PeekL(*value))
        EndSelect
      Else
        Select LCase(PeekS(PeekL(*name)))
          Case "title"
            FileTag\Title = PeekS(PeekL(*value))
          Case "artist"
            FileTag\Artist = PeekS(PeekL(*value))
        EndSelect
      EndIf
      FreeMemory(*tagtype)
      FreeMemory(*name)
      FreeMemory(*value)
      FreeMemory(*length)
    Next
    If FileTag\Title <> "" Or FileTag\Artist <> ""
      ProcedureReturn #True
    Else
      ProcedureReturn #False
    EndIf
  Else
    ProcedureReturn #False
  EndIf
  FreeMemory(*numinfo)
EndProcedure
MFG Lukaso
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
Arrag0n
Beiträge: 32
Registriert: 24.06.2005 20:49
Wohnort: Austria
Kontaktdaten:

Beitrag von Arrag0n »

Daaaaanke...

werds gleich mal testen :mrgreen:
Aus den Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen.
Benutzeravatar
Arrag0n
Beiträge: 32
Registriert: 24.06.2005 20:49
Wohnort: Austria
Kontaktdaten:

wma Tag auslesen und ändern

Beitrag von Arrag0n »

Supi
das auslesen funzt super.
Danke!

:mrgreen:
Aus den Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen.
Antworten