Problem mit lame

  • Hallo zusammen, ich will mir gerade einen kleinen wav mp3 konverter schreiben. In dem soll einfach die lame.exe datei ausgeführt werden.

    Ich habe mir einfach bei chip lame heruntergeladen und die datei entpackt und die exe ausgeführt.

    Code
    lame.exe -b 192 -h "eingangsdatei.wav" ausgabedatei.mp3

    Dieser befehl hat auch wunderbar funktioniert. dann habe ich angefangen ein script dafür zu schreiben. etwas ganz einfaches.

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

    #include <File.au3>
    #Include <Date.au3>

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

    If FileExists($CmdLine[1]) = true And _
    FileExists($CmdLine[2]) = true Then

    RunWait(@ComSpec & ' /c ' & $CmdLine[1] & ' -b 192 -h ' & $CmdLine[2] & ' ' & $CmdLine[3], @ScriptDir, @SW_HIDE)

    EndIf

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

    Doch hier wird keine datei erzeugt, was bei der normalen ausführung in der kommandozeile der lame.exe aber einwandfrei funktioniert.

    wodran kann das liegen?

    Bei diesem Beispiel bekomme ich auch keinen text zurück, was ich wirklich komisch finde.

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

    #include <File.au3>
    #Include <Date.au3>

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

    Func _getDOSOutput($command)

    Local $text = '', $Pid = Run(@ComSpec & " /c " & $command, "", @SW_HIDE, 2 + 4)

    While 1

    $text &= StdoutRead($Pid, False, False)

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

    If @error Then

    ExitLoop

    EndIf

    Sleep(5)

    WEnd

    Return $text

    EndFunc

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

    If FileExists($CmdLine[1]) = true And _
    FileExists($CmdLine[2]) = true Then

    $text = _getDOSOutput($CmdLine[1] & " -b 192 -h " & $CmdLine[2] & " " & $CmdLine[3])

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

    MsgBox(1, $text, "")

    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Parameter1 ist die WAV, Parameter2 die MP3-Datei?
    Dann:

    [autoit]


    #include <File.au3>
    #Include <Date.au3>

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

    If FileExists($CmdLine[1]) = true And _
    FileExists("lame.exe") = true Then

    RunWait('lame.exe -b 192 -h "' & $CmdLine[1] & '" "' & $CmdLine[2] & '"', @ScriptDir, @SW_HIDE)

    EndIf

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • ich habe da gerade noch was rausgefunden.

    ich muss alle normalen " anführungszeichen durch ein Hochkomma ersetzen

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

    Func _getDOSOutput($command)

    Local $text = '', $Pid = Run(@ComSpec & ' /c ' & $command, '', @SW_HIDE, 2 + 4)

    While 1

    $text &= StdoutRead($Pid, False, False)

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

    If @error Then

    ExitLoop

    EndIf

    Sleep(5)

    WEnd

    Return $text

    EndFunc

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

    das ganze auch in der funktion.

    dann wird die datei auch ordnungsgemäß erstellt. ich bekomme aber trotzdem keinen text zurück.

  • Mim text auslesen hab ich so:

    Spoiler anzeigen
    [autoit]


    Func _CMDRead($Command, $ScriptDir)
    Local $CMDRead

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

    $CMD = Run(@ComSpec & " /c " & $Command, $ScriptDir, @SW_HIDE, $STDOUT_CHILD)

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

    While 1
    $CMDRead &= StdoutRead($CMD)
    If @error Then ExitLoop
    WEnd
    Return $CMDRead
    EndFunc ;==>_CMDRead

    [/autoit]

    Padmak

  • warum ich hier nichts uzrückbekomme weiß ich aallerdings ncith, denn als ich es mal mit 7zip ausprobiert hatte, da ging es.

    ich habe mal noch meine projektdatei und die lame exe dazugelegt.

    ich rufe das ganze dann immer so auf:

    script_wavmp3.exe eingabedatei.wav ausgabedatei.mp3

  • Wenn du des lame Dings da per CMD aufrufst, (also mit der echten), gibt es dann was zurück?
    Vielleicht gibt des Ding des auch anders aus?
    Probiers mal mit StderrRead

    Padmak

  • Wenn du des lame Dings da per CMD aufrufst, (also mit der echten), gibt es dann was zurück?
    Vielleicht gibt des Ding des auch anders aus?
    Probiers mal mit StderrRead

    Padmak

    ja, es gibt etwas aus, wenn ich was konvertiere.

    da sieht dann z.b. so aus:

  • Bitteschön^^
    StderrRead liest alles aus (vor allem Fehler), StdOutRead liest nur die Ausgabe aus
    Da ist ein Unterschied, wie du ja gemerkt hast^^

    Padmak