Seite 1 von 1

lame_enc.dll vs. lame.exe - was nehmen?

Verfasst: 09.07.2006 17:22
von Delle
Hallo,

angenommen man will einen kleinen Wav2MP3-Konverter schreiben,
was nimmt man dann von den beiden? Die lame.exe kann man ja
problemlos als Programm von PB aus aufrufen und im Silentmodus
ausführen lassen, allerdings bekommt man ja absolut kein Feedback wann die Konvertierung fertig ist usw.

Geht das ev. mit der lame_enc.dll? Allerdings wie spricht man die an? Im Manuel steht nirgends etwas davon :-(

Verfasst: 09.07.2006 17:55
von AndyX
Im Manuel steht nirgends etwas davon
ich will ja wohl hoffen, dass die dem armen Manuel nichts eingraviert haben...

SCNR

Verfasst: 09.07.2006 17:59
von Kaeru Gaman
er sagte im nicht auf.
musste der arme Manuel auch noch ne Rektalsonde ertragen?

Verfasst: 09.07.2006 19:30
von Eric
Alles andere als sinnvoll:

Code: Alles auswählen

RandomSeed(GetTickCount_())

#BE_CONFIG_MP3 = 0
#BE_MP3_MODE_MONO = 3

Samples.l
BufferSize.l
hbeStream.l

*mem=AllocateMemory(28)
PokeL(*mem+0,#BE_CONFIG_MP3)
PokeL(*mem+4,44100)
PokeB(*mem+8,#BE_MP3_MODE_MONO)
PokeW(*mem+9,32)
PokeL(*mem+13,0)

OpenLibrary(0,"lame_enc.dll")

CallFunction(0,"beInitStream",*mem,@Samples,@BufferSize,@hbeStream)

*buffer = AllocateMemory(Buffersize)
*wavdata = AllocateMemory(Samples*2)

CreateFile(0,"test.mp3")

For x=0 To 1000

  For y=0 To Samples
    PokeW(*wavdata+x*2,Random(32768)*Random(1)*-1)
  Next

  CallFunction(0,"beEncodeChunk",hbeStream,Samples,*wavdata,*buffer,@Output)
  WriteData(0,*buffer,Output)
Next

CallFunction(0,"beDeinitStream",hbeStream,*buffer,@Output)

WriteData(0,*buffer,Output)


CallFunction(0,"beCloseStream",hbeStream)

CloseFile(0)

Verfasst: 10.07.2006 15:42
von Delle
Hm, sehr geiles Beispiel ;)

Aber wo findet man die Befehlsübersicht zum Ansprechen der DLL?

Verfasst: 10.07.2006 16:29
von bobobo
keine Rückgabe bei runprogram()?
mit PB4 geht das eventuell so (fast direkt aus der Hilfe)

Code: Alles auswählen

 wavdatei.s =OpenFileRequester("WAVE-Datei auswählen","*.wav","Wave|*.wav",0)
SetCurrentDirectory(GetPathPart(wavdatei))
Debug GetCurrentDirectory()
  Lame = RunProgram("z:\programz\Lame.exe", GetFilePart(wavdatei), "", #PB_Program_Open|#PB_Program_Read) ; Pfad zu lame.exe anpassen
  Output$ = ""
  If Lame  
    While ProgramRunning(Lame)
      Output$ + ReadProgramString(Lame) + Chr(13)
    Wend
    Output$ + Chr(13) + Chr(13)
    Output$ + "Exitcode: " + Str(ProgramExitCode(Lame))     
  EndIf
  MessageRequester("Output", Output$)
  


Verfasst: 10.07.2006 23:38
von Delle
Geht tatsächlich, allerdings liefert die Konsole nur manchmal Text zurück und selbst wenn, müßte man diesen ja komplett zerhacken damit er brauchbar wird :-/

Verfasst: 11.07.2006 00:05
von Slut-Hunter
allerdings bekommt man ja absolut kein Feedback wann die Konvertierung fertig ist usw.
Lass dein Frontend einfach ne Batch Datei basteln, die nach jedem File ein Replie im Consolenfenster gibt.

Das selbe hab ich bei meinem Frontend für John The Ripper^^ auch gemacht.

Sieht ungefähr so aus(je nachdem wie man die Batchdatei schreiben lässt)

Bild