Seite 1 von 1

lame.exe

Verfasst: 01.09.2010 21:07
von Susan20
Hi,
hab' mich nach einer langen Pause mal wieder mit PB beschäftigt und ein kleines Projekt zum Aufnehmen von Sound gestartet. Das klappt ja mit den alten mci-Befehlen ganz gut:

Code: Alles auswählen

;Aufnahme Start 
mciSendString_("open new type waveaudio alias recsound" ....
mciSendString_("set recsound time format ms" ....
mciSendString_("set recsound alignment "+Str(alignment)+" bitspersample " ...
mciSendString_("record recsound" ...            
Und wenn man die Aufnahme beendet, wird alles in eine wav-Datei gepackt:

Code: Alles auswählen

mciSendString_("save recsound " + "c:\test.wav" ...
mciSendString_("close recsound" ...
Jetzt habe ich noch den Tipp im Forum zu lame entdeckt. Mit dem Programm "lame.exe" kann ich dann, nachdem die wav-Datei erstellt wurde, eine mp3-Datei machen. Das ist natürlich etwas sperrig, erst Sound aufnehmen, dann als wav-Datei abspeichern und dann in MP3 umwandeln. Meine Frage: Geht das vielleicht mit lame.exe kontinuierlich, also ohne den Umweg über eine wav-Datei? Denn ein Beispiel, das mit lame mitgeliefert wird, ist:
# Streaming mono 22.05 kHz raw pcm, 24 kbps output:
cat inputfile | lame -r -m m -b 24 -s 22.05 -- > output

# Streaming mono 44.1 kHz raw pcm, with downsampling to 22.05 kHz:
cat inputfile | lame -r -m m -b 24 --resample 22.05 -- > output
Ich beziehe mich nur auf das Programm lame.exe. Denn das Arbeiten mit der lame_enc-Dll ist weit jenseits meiner Möglichkeiten. :cry:

Re: lame.exe

Verfasst: 14.01.2011 16:19
von real
Hi,

ich weiß nicht, wie bei deinem mci die Wave-Datei erzeugt wird (weil ich noch nie mit mci gearbeitet habe), aber ich kann dir sagen, wie man Daten in den die lame.exe hineinbekommt: du öffnest die lame.exe mit den Parametern aus dem Beispiel und den Attributen #PB_Program_Open|#PB_Program_Write|#PB_Program_Hide (Letzteres natürlich nur, wenn du kein Konsolenfenster willst) und übergibst die Daten per WriteProgramData() an den geöffneten Prozess.

Gruß
René

Re: lame.exe

Verfasst: 18.01.2011 00:46
von inc.
http://www.purebasic.fr/english/viewtop ... ght=ffmpeg

In diesem Fall mit ffmpeg, aber wenn LAME StdIn genauso wie ffmpeg unterstützt, muss man nur noch die Kommandozeile anpassen und fertig.

Re: lame.exe

Verfasst: 20.01.2011 19:17
von Susan20
Danke für die Hinweise. Ja, mit RunProgram() und den entsprechenden flags sowie unter Ausnutzung von stdin und stout von lame.exe ist es mir gelungen, die an der Soundkarte anfallenden Daten "kontinuierlich" ins mp3-Format zu encodieren.

Re: lame.exe

Verfasst: 31.01.2011 01:34
von DarkSoul
Ich fummel auch grad mit MCI rum. Wenn die Musik nicht wie aus der Toilette klingen soll:
mciSendString_("set recsound samplespersec 44100", 0, 0, 0) ;CD-Samplerate. Aufzeichnen darunter führt oft zu hässlichem Aliasing bei Billigsoundkarten
mciSendString_("set recsound bitspersample 16", 0, 0, 0) ;16 Bit rauschen weniger
mciSendString_("set recsound channels 2", 0, 0, 0) ;Mono ist auch von gestern


Zu Lame.
lame.exe liebt die standardausführung von 8000hz/8Bits afaik nicht so sehr. Die .dll-Version ist gequirlter Mist, da sie weniger kann und auch sonst gerne mal Müll erzeugt (weiß ich von Audacity, welches sie verwendet). Aber 24kbps sind bisschen optimistisch.

Ich würde für Mucke:

lame.exe -h -V 2 bla.wav bla.mp3

und für Sprachaufzeichnungen:

lame.exe -h -b 64 -m m --resample 22.05 --lowpass 6 --highpass 0.3 bla.wav bla.mp3 (Entspricht der Quali von Youtube @240p und das reicht hier dicke. Selbst Musik ist hier noch ganz annehmbar, wenn man die sprachbetonenden Pass-Parameter weglässt)

vorschlagen.

Wenn der User neben einigen optimierten Presets die Parameter selbst wählen kann, umso besser. Nur ab 96khz würde ich mit der Samplerate runter auf 22,05khz gehen. Ab 64kbps auf Stereo verzichten. Noch niedrigere Sampleraten bereiten öfters Probleme auf Standalone-Playern.

Das Zwischenparken von .wav-Dateien würde ich gar nicht so tragisch sehen. Das machen viele Programme. Zumal es immer mal sein kann, dass der MP3-Encoder nicht hinterherkommt oder sonstwas. Viele Programme wandeln erst am Ende der Aufzeichnung von Soundkartenkanälen. Auch Tonbearbeitungsprogramme, wie Audacity, arbeiten intern zunächst mit .wav. Festplattenspeicher hat doch nun wirklich jeder mehr als genug heutzutage. Nur würde ich die temp.wav auf jeden Fall nach Gebrauch löschen und nicht im Müll- ups!! Tempordner zurücklassen.

lg