Bräuchte ich nur eine Idee wie man die mp3 Dateien mit inkorrekten ID3-Tags am schnellsten erkennt.Audiogenie liefert ja eine Länge,aber falsch. Da wäre besser, wenn es garkeine Länge wiedergeben würde. Mediainfo habe ich dafür nun eingebaut.ccode_new hat geschrieben: Das Ende vom Lied:
Mp3 Dateien mit korrekten ID3-Tags sind zu bevorzugen und in der "Else-Klausel" zu reparieren.
Problem mp3 Titellänge bei MCI-MP3-Commands
-
- Beiträge: 214
- Registriert: 30.03.2014 19:57
- Computerausstattung: Purebasic 5.70
- Wohnort: 18314 Löbnitz
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Purebasic 5.51
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Man könnte vielleicht erstmal mit der Dateigröße prüfen ob die Songlänge stimmen könnte. (Sehr grobe Prüfung)
Man könnte auch beim Abspielen der Mp3 einen Timer mit laufen lassen. Die Timer-Zeit nach Durchlauf könnte eingetragen werden.
(Sehr genau, aber sehr langsame und gedultige Prüfung)
Quatsch bei Seite!
Wie falsch ist den die falsch ausgelesene Zeit beim "AudioGenie" ?
Mich interessiert auch immernoch wie der Windows-Explorer so schnell die korrekte Länge ermittelt.
Die MCI/DirectShow (Win 32 API) versagt ja bei VBR.
Aber es gibt ja auch noch modernere Microsoft Multimedia-API (meistens über .Net-Framework.)
(Es fehlt nur noch das WIE unter PureBasic)
Der Weg über die MediaInfo.dll ist aber auch ersteinmal ganz ok.
Man könnte auch beim Abspielen der Mp3 einen Timer mit laufen lassen. Die Timer-Zeit nach Durchlauf könnte eingetragen werden.
(Sehr genau, aber sehr langsame und gedultige Prüfung)
Quatsch bei Seite!
Wie falsch ist den die falsch ausgelesene Zeit beim "AudioGenie" ?
Mich interessiert auch immernoch wie der Windows-Explorer so schnell die korrekte Länge ermittelt.
Die MCI/DirectShow (Win 32 API) versagt ja bei VBR.
Aber es gibt ja auch noch modernere Microsoft Multimedia-API (meistens über .Net-Framework.)
(Es fehlt nur noch das WIE unter PureBasic)
Der Weg über die MediaInfo.dll ist aber auch ersteinmal ganz ok.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
-
- Beiträge: 214
- Registriert: 30.03.2014 19:57
- Computerausstattung: Purebasic 5.70
- Wohnort: 18314 Löbnitz
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Audiogenie zeigt über 21min statt über 3min.ccode_new hat geschrieben: Wie falsch ist den die falsch ausgelesene Zeit beim "AudioGenie" ?
Wie der Windowsexplorer das macht interessiert mich auch.
Solange es keine bessere Lösung gibt lasse ich das nun erst einmal so mit Mediainfo.
Purebasic 5.51
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Servus !
Ich habe tolle Nachrichten.
Es gibt eine Lösung.
(Benötigt Windows > XP (Vista, 7, …) )
(Unter Windows XP funktioniert es glaube ich nicht. Es könnte aber trotzdem mal getestet werden.)
Benötigt die tolle "COMatePLUS"-Bibliothek aus diesem Forum.
Ich habe tolle Nachrichten.
Es gibt eine Lösung.
(Benötigt Windows > XP (Vista, 7, …) )
(Unter Windows XP funktioniert es glaube ich nicht. Es könnte aber trotzdem mal getestet werden.)
Benötigt die tolle "COMatePLUS"-Bibliothek aus diesem Forum.
Code: Alles auswählen
IncludePath "..\"
XIncludeFile "COMatePLUS.pbi"
Structure _EOP
Description.s
Value.s
EndStructure
Global NewMap EOP_Items._EOP()
Procedure GetExtendedFileProperties(file$, Map Item._EOP())
Define.COMateObject oShell
Define.COMateObject oFolder
Define.COMateObject oFolderItem
Define.COMateObject oFolderItems
Define DetailCounter
Define.s DetailDescription, DetailValue
oShell = COMate_CreateObject("Shell.Application")
If oShell
oFolder = oShell\GetObjectProperty("NameSpace('" + GetPathPart(file$) + "')")
If oFolder
oFolderItems = oFolder\GetObjectProperty("Items")
If oFolderItems
oFolderItem = oFolder\GetObjectProperty("ParseName('" + GetFilePart(file$) + "')")
If oFolderItem
For DetailCounter = 0 To 512
DetailDescription = oFolder\GetStringProperty("GetDetailsOf(" + Str(oFolderItems) + " As COMateObject, " + Str(DetailCounter) + ")")
DetailValue = oFolder\GetStringProperty("GetDetailsOf(" + Str(oFolderItem) + " As COMateObject, " + Str(DetailCounter) + ")")
If DetailValue
If AddMapElement(Item(), Str(DetailCounter))
Item()\Description = DetailDescription
Item()\Value = DetailValue
;Debug "Nr." + Str(DetailCounter) + " -> " + DetailDescription + ": " + DetailValue
EndIf
EndIf
Next
oFolderItem\Release()
Else
Debug "!oFolderItem"
Debug COMate_GetLastErrorDescription()
EndIf
oFolderItems\Release()
Else
Debug "!oFolderItems"
Debug COMate_GetLastErrorDescription()
EndIf
oFolder\Release()
Else
Debug "!oFolder"
Debug COMate_GetLastErrorDescription()
EndIf
oShell\Release()
Else
Debug "!oShell"
Debug COMate_GetLastErrorDescription()
EndIf
EndProcedure
Procedure.s GetSongDuration()
ProcedureReturn EOP_Items("27")\Value
EndProcedure
media.s = OpenFileRequester("Mp3 Suche!", "*.mp3", "Mp3|*.mp3", 0)
GetExtendedFileProperties(media, EOP_Items())
MessageRequester("Song-Duration", "Die Mp3-Länge ist: "+ GetSongDuration(), #PB_MessageRequester_Info)
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
-
- Beiträge: 214
- Registriert: 30.03.2014 19:57
- Computerausstattung: Purebasic 5.70
- Wohnort: 18314 Löbnitz
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Hallo ccode_new
Das sind ja wirklich tolle Nachrichten.
Ich habs getestet und funktoniert tadellos. Und schnell ist es auch . Prima.
Hab es gleich eingebaut.
Habe noch ein Problem bei Audiogenie festgestellt.
Manche Bilder werden nicht in den ID3Tag übernommen obwohl :
Debug ausgibt : Das Bild wurde übernommen.
Alles andere vom ID3TAG wird immer richtig gespeichert. Die Bilder sind immer .jpg und haben eine Auflösung von 300x300
Das sind ja wirklich tolle Nachrichten.
Ich habs getestet und funktoniert tadellos. Und schnell ist es auch . Prima.
Hab es gleich eingebaut.
Habe noch ein Problem bei Audiogenie festgestellt.
Manche Bilder werden nicht in den ID3Tag übernommen obwohl :
Code: Alles auswählen
If SetCoverImage(imagepad, "CoverFront", #CoverFront)
Debug "Das Bild wurde übernommen."
Else
Debug "Das Bild wurde nicht übernommen."
EndIf
Alles andere vom ID3TAG wird immer richtig gespeichert. Die Bilder sind immer .jpg und haben eine Auflösung von 300x300
Purebasic 5.51
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Sorry!
Ändere es bitte so:
Return:
Int16 normalerweise -1, bei Fehler 0
PseudoCode:
If Abs(..Funktion..)
#True
Else
#False
EndIf
Ändere es bitte so:
Return:
Int16 normalerweise -1, bei Fehler 0
PseudoCode:
If Abs(..Funktion..)
#True
Else
#False
EndIf
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
-
- Beiträge: 214
- Registriert: 30.03.2014 19:57
- Computerausstattung: Purebasic 5.70
- Wohnort: 18314 Löbnitz
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Habe das Problem finden können. Im Id3Tag können mehrere Bilder gespeichert sein.
Bei wird das Bild 1 geladen .
Wenn ich mache dann wird das Bild 1 aber nicht überschrieben, sondern es wird als Bild 2 oder Bild 3 hinzugefügt.
Man müsste eine Funktion haben die alle vorhanden Bilder löscht.
Bei
Code: Alles auswählen
GetCoverImage(temp_CoverFront, 1)
Wenn ich
Code: Alles auswählen
SetCoverImage(temp_coversave ,"Cover Front", #CoverFront)
Man müsste eine Funktion haben die alle vorhanden Bilder löscht.
Purebasic 5.51
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Genau so ist es.Habe das Problem finden können. Im Id3Tag können mehrere Bilder gespeichert sein.
Für diesen Fall habe ich ja auch diese Konstellation in den Test eingebaut.
GetCoverImage(GetCurrentDirectory()+"song.jpg", 1)
GetCoverImage(GetCurrentDirectory()+"song.jpg", 2)
;RemoveTag()
RemoveTag() würde auch alle Bilder löschen.
Es müssen nur die anderen Daten zwischengespeichert und neu gesetzt werden.
Es ist bei Änderung der Set-Funktion auch möglich nur Bildlinks zu speichern.
In früheren Versionen der AudioGenie-Lib gib es noch die Funktion "ID3V2DeletePictures()".
Diese Funktion ist aber in der Version 3 nicht mehr enthalten.
Anbei:
Wie man überhaupt auf die Idee kommt den Rückgabewert standardmäßig auf -1 zulegen? So ein Mist!
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
-
- Beiträge: 214
- Registriert: 30.03.2014 19:57
- Computerausstattung: Purebasic 5.70
- Wohnort: 18314 Löbnitz
Re: Problem mp3 Titellänge bei MCI-MP3-Commands
Danke für den Tip.RemoveTag() würde auch alle Bilder löschen.
Es müssen nur die anderen Daten zwischengespeichert und neu gesetzt werden.
RemoveTag() hat das Problem gelöst ! Wie du sagtest: Daten zwischenspeichern, RemoveTag()
ausführen und Daten mit neuem Bild speichern.
Purebasic 5.51