Hallo
ich habe mir ein paar sachen zusammen gesucht um die Fritzbox Anrufbeantworter Files (speex formart ohne Container) in wave zu Convertieren.
Aber so wie Ich das machen wollte geht es nicht.
Converter Funktionen:
Spoiler anzeigen
#include-once
#include <Constants.au3>
Global $sSpeexDecBin = @ScriptDir & "\speexdec-fb.exe"
Global $sSpeexEncBin = @ScriptDir & "\speexenc-fb.exe"
Global $bSpeexDec = FileExists($sSpeexDecBin)
Global $bSpeexEnc = FileExists($sSpeexEncBin)
FileInstall(@ScriptDir & "\speexdec-fb.exe",@ScriptDir & "\speexdec-fb.exe")
FileInstall(@ScriptDir & "\speexenc-fb.exe",@ScriptDir & "\speexenc-fb.exe")
Func _speexDecFB($infile)
;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $infile = ' & BinaryToString($infile) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Local $outfile
if $bSpeexDec Then
$Pid = Run($sSpeexDecBin & " - - ",@ScriptDir,$STDIN_CHILD+$STDOUT_CHILD)
StdinWrite($Pid,$infile)
StdinWrite($Pid)
While True
$outfile &= StdoutRead($Pid)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $outfile = ' & $outfile & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
If @error Then ExitLoop
Sleep(25)
WEnd
return $outfile
Else
Return SetError(1,0,0)
EndIf
EndFunc
Func _speexEncFB($infile)
Local $outfile
if $bSpeexEnc Then
$Pid = Run($sSpeexEncBin & " - -",@ScriptDir,$STDIN_CHILD+$STDOUT_CHILD)
StdinWrite($Pid,$infile)
StdinWrite($Pid)
While True
$outfile &= StdoutRead($Pid)
If @error Then ExitLoop
Sleep(25)
WEnd
return $outfile
Else
Return SetError(1,0,0)
EndIf
EndFunc
Testscript:
Spoiler anzeigen
#include "speex_converter.au3"
$infile = FileOpen(@ScriptDir & "\rec.0.spx")
$RC = FileRead($infile)
$RC = _speexDecFB($RC)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $RC = ' & $RC & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Im Anhang befindet sich ein Speex File rec.0.spx welches convertiert werden soll. Es schein aber irgent wie mit dem IOStreem probleme zu geben.