ID3v2 aus mp3-Datei auslesen

Übersicht BlitzBasic Codearchiv

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Baschdi

Betreff: Urheberrecht

BeitragFr, Jun 04, 2010 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
mh also ich darf ja keine Musikdatei hochladen, die ich selber zb mit einem Album gekauft habe, oder?
Ich darf nur Musikdateien hochladen, die sowieso kostenlos für jeden sind, wenn ich das richtig verstehe?

Ich hab nur wenige Songs gefunden, die man Uploaden dürfte und bei denen funktioniert alles bestens -.-

Also hab ich einen Song hergenommen und ihn mit Audacity stumm geschalten und abgespeichert, als ich ihn dann aber mit GetID abgerufen habe, hat sich das Ergebnis verändert !!!

Vorher:

Titel = "Richtiger Titel"
Interpret = "Richtiger Interpret"
Nummer = 0 (sollte 1 sein)
Jahr = 200 (sollte 2008 sein)
Genre = "" (sollte 'Rock & Pop' sein)

Nachher:

Titel = "Richtiger Titel"
Interpret = "Richtiger Interpret"
Nummer = 1 (sollte 1 sein)
Jahr = 0 (sollte 2008 sein)
Genre = "" (sollte 'Rock & Pop' sein)

So und hier ein kleiner Screenshot:
http://s3.directupload.net/fil...ub_jpg.htm
Mein Programm das im Screenshot zu sehen ist hat folgenden Code:
Code: [AUSKLAPPEN]

;###

;Konstanten
Const width  = 800
Const height = width*3/4

;Auflösung
Graphics width, height, 32, 2
SetBuffer BackBuffer()
AppTitle "Ordner Funktion 0.1"
Include "Data\info.bb"

;Pfade
Global pfad$ = "D:\Musik\Coldplay\Viva La Vida"
Global yback,nummer

;Ordner Funktion
Global Mp3Anzahl = 0, Mp3AnzahlGesamt = 4000
Dim Mp3DateiPfad$( Mp3AnzahlGesamt )
Dim Mp3DateiNummer( Mp3AnzahlGesamt )
Dim Mp3DateiTitel$( Mp3AnzahlGesamt )
Dim Mp3DateiAutor$( Mp3AnzahlGesamt )
Dim Mp3DateiAlbum$( Mp3AnzahlGesamt )   
Dim Mp3DateiJahr( Mp3AnzahlGesamt )         
Dim Mp3DateiGenre$( Mp3AnzahlGesamt )

Global OrdnerAnzahl = 0, OrdnerAnzahlGesamt = 300
Dim OrdnerPfad$( OrdnerAnzahlGesamt )

;###

OrdnerLesen( pfad$ )
;Hauptcode
Repeat
   Cls
      
      Line 0,50,width,50
      
      Text 300,10,"Ordner: "+OrdnerAnzahl+" / Mp3: "+Mp3Anzahl+" / Nummer:"+yback
      
      
      
      ;For i=1 To Mp3Anzahl
      ;   Text 10,yback+75+i*15,Mp3DateiPfad$( i )
      ;Next
      ;For w=1 To OrdnerAnzahl
      ;   Text 410,75+w*15,OrdnerPfad$( w )
      ;Next
      
      If KeyHit(200) Then yback=yback+1
      If KeyHit(208) Then yback=yback-1
      
      Text 100,100,"Pfad: "+Mp3DateiPfad$(yback)
      Text 100,115,"Nummer: "+Mp3DateiNummer(yback)
      Text 100,130,"Titel: "+Mp3DateiTitel$(yback)
      Text 100,145,"Interpret: "+Mp3DateiAutor$(yback)
      Text 100,160,"Jahr: "+Mp3DateiJahr(yback)
      Text 100,175,"Genre: "+Mp3DateiGenre$(yback)
      
      
      
   
   Flip
Until KeyHit(1)
End

;###

;Funktionen
Function OrdnerLesen( OrdnerName$ )

   Verzeichnis = ReadDir( OrdnerName$ )
   
   Repeat
      Datei$=NextFile$( Verzeichnis )
      
      If Datei$ = "" Then:
         Exit
      Else:
         
         pos = Instr( Datei$, "." )
         
         If pos > 0 And Right( Datei$, 4 ) = ".mp3" Then:    ; MP3
            
            Mp3Anzahl = Mp3Anzahl + 1
            Mp3DateiPfad( Mp3Anzahl ) = OrdnerName$+"\"+Datei$
            Mp3DateiNummer( Mp3Anzahl )  = GetIDTag$( Mp3DateiPfad( Mp3Anzahl )   ,0 )            
            Mp3DateiTitel( Mp3Anzahl )  = GetIDTag$( Mp3DateiPfad( Mp3Anzahl )   ,1 )
            Mp3DateiAutor( Mp3Anzahl )  = GetIDTag$( Mp3DateiPfad( Mp3Anzahl )   ,2 )
            Mp3DateiAlbum( Mp3Anzahl )  = GetIDTag$( Mp3DateiPfad( Mp3Anzahl )   ,3 )
            Mp3DateiJahr( Mp3Anzahl )  = GetIDTag$( Mp3DateiPfad( Mp3Anzahl )   ,4 )
            Mp3DateiGenre( Mp3Anzahl )  = GetIDTag$( Mp3DateiPfad( Mp3Anzahl )   ,6 )
            
         Else:
                  
            If FileType( OrdnerName$+"\"+Datei$ ) = 2 Then: ; Ordner
               
               If Datei$ <> "." And Datei$ <> ".." Then:
               OrdnerAnzahl = OrdnerAnzahl + 1
               OrdnerPfad( OrdnerAnzahl ) = OrdnerName$+"\"+Datei$
               
               OrdnerLesen( OrdnerPfad$( OrdnerAnzahl  ) )
               EndIf
               
            EndIf
         
         EndIf
         
      EndIf       
   Forever
   
End Function

;###


Noch etwas:
Die meisten Musikdateien habe ich mit Mp3Tag verändert, also hab zb das Genre verändert und alles vereinheitlicht. Vllt kommt der Fehler daher?

Lieder hochladen würde ich gerne, aber die einzigen Dateien die ich hochladen darf, funktionieren und wenn ich songs stummschalte dann verändert sich der Fehler... was eigentlich nicht sein dürfte oder?

mfg

~EDITIERT~

Keine überlange lückenlose Kommentarzeilen bitte.
mfG Holzchopf

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jun 04, 2010 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennst du dich mit Hexeditoren aus?

Wenn ja, dann pack die ersten 4096 Bytes und sicherheitshalber auch die letzten 1024 Bytes in jeweils einer Datei und lasse sie mir das Paket zukommen. Dann hab ich die notwendigen Header-Daten und wenige (milli)-Sekunden Musik, was auch keine Probleme mit Urheberrechten macht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Baschdi

Betreff: HexEditoren

BeitragFr, Jun 04, 2010 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab den WHD HexEditor und wenn ich mit dem die Sounddatei öffne, wie speicher ich dann die ersten 4096 Bytes in einer Extra Datei?

ich habe eine Sounddatei angeschaut und festgestellt das in der Datei in den letzten Bytes Titel Interpret Album und Jahr vermerkt sind aber das Jahr ist eben wieder nur 200 nicht 2008..

Mit Hexeditoren kenn ich mich eigentlich nicht aus..

mfg
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jun 04, 2010 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn selbst da nur ''200'' statt ''2008'' steht, dann ist von einer defekten Sounddatei auszugehen. Kann ja auch sein, das dein Musikdownload-Anbieter da beknackte Software benutzt und sich nun darüber freud alles nacharbeiten zu lassen.

Ansonsten markier beim Hex-Editor ab ~4000 Bytes und werf es einfach weg. Das was übrig bleibt speicherst du dann ab. Das gleiche dann mit dem Ende der Originaldatei. Wirf alles weg, außer die letzten ~1000 Bytes.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Baschdi

Betreff: Ausschnitte

BeitragFr, Jun 04, 2010 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab auch mal bei der Datei nach TCON (dem Genre) im HexEditor gesucht und es gefunden, obwohl es nicht angezeigt wird bei GetID, folglich ist da dann doch ein kleiner Fehler im Programm schätze ich, oder?

Also wenn ich im HexEditor der Datei nach dem Jahr (TYER) suche zeigt es mir als Zahl dahinter 200 an, wenn ich dann dahinter noch die 8 einfüge, dann stimmt das Jahr bei GetID wieder, aber wieso wurde es zuvor bei Eigenschaften schon richtig angezeigt, aber in der Datei selbst offensichtlich nicht mal geseichert?

Und wenn ich nach dem Genre suche (TCON) findet der HexEditor auch das richtige Genre dahinter 'Rock & Pop', aber angezeigt wird es bei GetID trotzdem nicht!

Hier die gesuchten Ausschnitte:

Anfang:
http://www.fileuploadx.de/626518

Ende:
http://www.fileuploadx.de/170402

Die Datei wurde übrigens vom Originalalbum per iTunes auf meinen Computer importiert....
_____________________________________________________________________________________Edit:

Ist mir etwas peinlich, aber das mit dem Genre ist mein Fehler ich hab das ausversehen ausgeschalten gehabt!! Dennoch, jetzt zeigt mir das Programm zwar überall Genres an, manchmal aber einfach komplett andere als es sollte!

Was bewirkt diese Zeile:
Code: [AUSKLAPPEN]

 Case 6 IStart=Asc(Mid(ITagStream,1152,1)): If IStart<148 Then For ICount=0 To IStart: Read IBuffering: Next

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jun 04, 2010 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Upload!

Folgendes. Die Dateien haben Bilder eingebunden. Da ich nie mp3-Dateien mit eingebundenen Bildern hatte, hab ich auch dieses nicht berücksichtigt. Nun befindet sich das Bild unsinniger Weise noch vor den üblichen Tags, womit sie aufgrund der Informationsmenge der Bilder außerhalb des ersten KB von ID3v2 liegen. Bei ID3v1 dagegen sind die Informationen tatsächlich nicht vollständig.

Lösungswege:

Änder mal folgendes um:

von: Code: [AUSKLAPPEN]
      ;VERFÜGBARKEIT
      If ISize>1024 Then
nach: Code: [AUSKLAPPEN]
      ;VERFÜGBARKEIT
      If ISize>102400 Then

und

von: Code: [AUSKLAPPEN]
         ;ERSTEN/KiB/ALS/STRING/ZUSAMMENSTELLEN
         SeekFile(IFile,0): For ICount=1 To 1024: ITagStream=ITagStream+Chr(ReadByte(IFile)): Next
nach: Code: [AUSKLAPPEN]
         ;ERSTEN/KiB/ALS/STRING/ZUSAMMENSTELLEN
         SeekFile(IFile,0): For ICount=1 To 102400: ITagStream=ITagStream+Chr(ReadByte(IFile)): Next

Ich hab leider keine solche mp3-Dateien um prüfen zu können, ob das funktioniert. Wenn ja, dann gib mal bitte eine Info zu, dass ich das entsprechend ändern kann.

Zur Zeit gefällt mir allerdings auch der Workaround nicht so wirklich. Denn wenn nun eine mp3-Datei kleiner als 100KB groß ist, wird nun das ID3v2 komplett übergangen. Es muß also eine andere Lösung her, wo das jeweilige Frame komplett ausgelesen wird, je nachdem wie groß es tatsächlich ist.

- - -

Zitat:
...jetzt zeigt mir das Programm zwar überall Genres an, manchmal aber einfach komplett andere als es sollte

Die Taginformationen waren ursprücnglich nie für mp3-Dateien vorgesehen. Erst die Programmierer von WinAMP haben es sich vorgenommen da ''einzupfuschen''. Das hat zum einen den Vorteil zur Folge, dass wir das natürlich zu verdanken haben. Aber auch der Nachteil, dass die Programmierer da nicht von Beginn an eine Dokumentation zu geschrieben haben. Das Resultat ist/war, dass es nicht 100%ig als Standard anzusehen ist. Dennoch benutze ich mein allseits geliebten WinAMP V.2.91 um die Tags letztendlich kontrollieren zu können. Mp3Tag-Editor zeigt das alles zwar schön in einer Tabellenform an, jedoch auch hier und da ''falsch'' an.

Zitat:
Was bewirkt diese Zeile:...

Sie liest - falls vorhanden - die ID3v1 aus, wenn keine ID3v2 vorhanden sind. Die ID3v1-Informationen sind in den letzten 127 Bytes einer mp3-Datei gespeichert und haben wegen des festen und zugleich kleinen Adressraum nur sehr beschränkte Speichermöglichkeiten. So kann jeweils der Titel, Artist, Album und das Kommentar nicht mehr als 30 Zeichen jeweils beinhalten. Die Datenblöcke liegen in festen Bereichen am Ende einer Datei, wenn ''TAG'' am Dateiende -127 Bytes geschrieben steht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Baschdi

BeitragFr, Jun 11, 2010 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also nach der Veränderung musste mein Programm das meine ganze Musik mit Tag abspeichert ewig lange laden, bzw unendlich lange, denn ich habe gewartet und gewartet aber nichts ist passiert....
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jun 11, 2010 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, danke für die Info. Ich werde mal versuchen einer mp3-Datei ein Bild anzuhängen. Dann das entsprechende Frame zu überspringen. Die Lösung wie sie zur Zeit gerade vorherrscht ist nicht so gut.

Wie gesagt: Der Standard ist nie wirklich klassifiziert worden. Später kammen immer mehr Sachen rein, und jeder hat seine eigene Suppe dazu gekocht. Mit den Frames sollte es aber klappen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Baschdi

BeitragSa, Jun 12, 2010 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja danke auf jeden Fall für den Einblick!
das MP3 Format ist doch relativ jung, schade das man an diese Tags trotzdem nicht gedacht hat, das würde mir viel Arbeit ersparen Razz
Wenn du deinen Code überarbeitet hast, lass es mich wissen!

mfg
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden
 

judos

BeitragSo, Sep 12, 2010 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Cooler Beitrag..

Ich wollte mal nachfragen ob man eigentlich auch bei anderen Dateien diese Informationen abrufen kann.

Man kann ja bei jeder Datei rechtsklick,Eigenschaften, Dateiinfo im Windows anzeigen lassen.
Bei mir sind dort dann immer die Attribute Titel,Thema,Kategorie,Stichwörter,Kommentare sowie Quelle,Autor,Version aufgelistet.

Allerdings sind bei herkömmlichen Dateien diese Informationen ja nicht in der Datei selbst gespeichert.
Weiss jemand, wie Windows das genau macht? Also wo die Infos gespeichert sind oder auch einfach nur wie man diese mit BB auslesen könnte?

mfg judos

das wurgel

BeitragSo, Sep 12, 2010 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
WinAPI kann das glaube ich (http://msdn.microsoft.com/de-d...83749.aspx)
1 ist ungefähr 3

mas93

BeitragFr, Jun 17, 2011 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab deine lib jetzt auch verwendet und für Bmax umgeschrieben.
Funktioniert alles sehr gut, nur wäre es noch von Vorteil wenn ich auch ".m4a" Dateien einlesen könnte..
Dazu finde ich aber keine Dokumentation oder sonstiges. Ich hab mir die Datei mal angeschaut:

Es taucht zwar immer z.B.: "[c]ART" dann komische Zeichen und der künstler auf, jedoch steht das immer irgendwo mitten in der Datei.

Kann mir da jemand weiterhelfen?

mfg
mas93
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jun 17, 2011 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
m4a-Dateien kenne ich nicht. Kann also auch nichts über dessen Aufbau sagen. Ansonsten wäre ein Hexeditor hilfreich. Denn dieser zeigt dir was sich hinter den ''komischen Zeichen'' verbirgt und aufgrund der Werte lassen sich Rückschlüsse ziehen wie sie auszuwerten sind.

Kann allerdings unter Umständen schon etwas dauern bis man dahinter steigt.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

mas93

BeitragSo, Jun 19, 2011 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Vielen Dank für die schnelle Antwort.
".m4a" Dateien sind die Dateien die Apple mit itunes verkauft (AAC Codec).
Noch nie davon gehört?

Gibt es dafür keine Dokumentation oder sonstiges?
Es gibt ja genug Programme die die Tags aus diesen Dateien auslesen.
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group