_soundlenght() giebt nicht die richtige Länge zurück

  • Ich arbeite derzeit an dem Ersteller der Playlists für den Playlister.

    [autoit]


    #include <audio.au3>
    #include <file.au3>

    [/autoit][autoit][/autoit][autoit]

    _erstellen()

    [/autoit][autoit][/autoit][autoit]

    Func _erstellen()
    $name = StringTrimLeft(FileReadLine(@DesktopDir&"\Playlister\creator\2create.txt",1),5)
    $folder = StringTrimLeft(FileReadLine(@DesktopDir&"\Playlister\creator\2create.txt",2),7)
    $firstfile = FileFindFirstFile($folder & "\*.mp3")
    $file = @DesktopDir & "\Playlister\namestart" & $name & "nameend.txt"
    _FileCreate($file)
    _FileWriteToLine($file, 1, "0", 1)
    $count = "0"
    Do
    $nextfile = FileFindNextFile($firstfile)
    $sound = _SoundOpen($folder & "\" & $nextfile)
    Local $lenght = _SoundLength($sound, 2) - 4400 ; 2 für Millisekunden
    MsgBox(0x0,"",$lenght)
    _FileWriteToLine($file, $count + 2, "<name>" & $folder & "\" & $nextfile & "</name><lenght>" & $lenght & "</lenght>", 1)
    $countadder = $count
    $count = $countadder + 1
    Until $nextfile = ""
    $lenght = _FileCountLines($file) - 1
    FileDelete(@DesktopDir&"\Playlister\creator\2create.txt")
    EndFunc ;==>_erstellen

    [/autoit]

    Der befehl

    [autoit]

    _Soundlenght()

    [/autoit]

    giebt immer falsche Längen zurück.

    Bei diesem Script

    [autoit]


    #include <audio.au3>

    [/autoit][autoit][/autoit][autoit]

    $sound = _SoundOpen("E:\Harry Potter\Harry Poter und der Stein der Weisen\1-01 Ansage.mp3")
    MsgBox(0x0,"",_SoundLength($sound,2))

    [/autoit]

    giebt er mir als Länge 9 Sekunden zurück, obwohl die eigentliche Länge 21 Sekunden ist. :(

    Kennt jemand vieleicht eine Alternative zu _Soundlenght()?

    MFG Jasper

    Einmal editiert, zuletzt von jasper3108 (8. Juni 2012 um 16:30)

  • Ich habe mir die neuste Version der audio.au3 geholt, da es angeblick(wie ich in einem Forum gelesen habe) mal in einer alten Version einen Bug gab. Jetzt geht es einwandfrei, aber trotzdem Danke.

  • Sollte es dich trotzdem interessieren, geht es auch so, ist umso genauer, musst dir allerdings im englischen AutoIt-Forum die Bass-UDF suchen :)

    [autoit]

    #include <Bass.au3>
    _BASS_Startup(@ScriptDir & "\bass.dll")
    _BASS_Init(0, -1, 44100, 0)
    $Pfad = "" ; Pfad zur mp3-Datei
    $Track = _BASS_StreamCreateFile(0, $Pfad, 0, 0, 0)
    $Laenge = _BASS_ChannelBytes2Seconds($Track, _BASS_ChannelGetLength($Track, $BASS_POS_BYTE))
    MsgBox(0, "", $Laenge)

    [/autoit]
  • Auf jeden Fall, da gibt es kein Aber gibt SoundLength die richtige Länge zurück ;)

    Die winm.dll steuert schließlich auch viele Windowsinterne Funktionen, das wäre das schon sehr fragwürdig.

    Grüße