Aktuelle Zeit: 11.12.2018 01:40

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 39 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Autor Nachricht
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 17.09.2018 19:51 
Offline

Registriert: 30.03.2014 19:57
Wohnort: 18314 Löbnitz
ccode_new hat geschrieben:
Das Ende vom Lied:
Mp3 Dateien mit korrekten ID3-Tags sind zu bevorzugen und in der "Else-Klausel" zu reparieren.


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.

_________________
Purebasic 5.51


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 17.09.2018 21:02 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 18.09.2018 09:31 
Offline

Registriert: 30.03.2014 19:57
Wohnort: 18314 Löbnitz
ccode_new hat geschrieben:
Wie falsch ist den die falsch ausgelesene Zeit beim "AudioGenie" ?

Audiogenie zeigt über 21min statt über 3min.
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 18.09.2018 19:18 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
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.

Code:
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)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 22.09.2018 13:53 
Offline

Registriert: 30.03.2014 19:57
Wohnort: 18314 Löbnitz
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 :
Code:
If SetCoverImage(imagepad, "CoverFront", #CoverFront)
                  Debug "Das Bild wurde übernommen."
                Else
                  Debug "Das Bild wurde nicht übernommen."
                EndIf


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

_________________
Purebasic 5.51


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 22.09.2018 14:29 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Sorry!

Ändere es bitte so:

Return:
Int16 normalerweise -1, bei Fehler 0

PseudoCode:
If Abs(..Funktion..)
#True
Else
#False
EndIf


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 22.09.2018 16:15 
Offline

Registriert: 30.03.2014 19:57
Wohnort: 18314 Löbnitz
Habe das Problem finden können. Im Id3Tag können mehrere Bilder gespeichert sein.
Bei
Code:
GetCoverImage(temp_CoverFront, 1)
wird das Bild 1 geladen .
Wenn ich
Code:
SetCoverImage(temp_coversave ,"Cover Front", #CoverFront)
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.

_________________
Purebasic 5.51


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 22.09.2018 16:29 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Zitat:
Habe das Problem finden können. Im Id3Tag können mehrere Bilder gespeichert sein.


Genau so ist es.

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! ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mp3 Titellänge bei MCI-MP3-Commands
BeitragVerfasst: 22.09.2018 18:20 
Offline

Registriert: 30.03.2014 19:57
Wohnort: 18314 Löbnitz
Zitat:
RemoveTag() würde auch alle Bilder löschen.
Es müssen nur die anderen Daten zwischengespeichert und neu gesetzt werden.


Danke für den Tip. :allright:

RemoveTag() hat das Problem gelöst ! Wie du sagtest: Daten zwischenspeichern, RemoveTag()
ausführen und Daten mit neuem Bild speichern.

_________________
Purebasic 5.51


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 39 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye