PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [@rec] im MP3-Format



nepomuck
31.08.2005, 14:16
Kann man unter Monitor die sox-Parameter ändern, so dass die [@rec]-Anweisung nicht wav, sondern mp3 aufzeichnet ?

Hintergrund:
Ich will eine Zeit lang alle eingehende ZVIE-Alarmierungen aufzeichnen, um später anhand der gesprochenen Meldung die jeweilige Feuerwehr zu einer Schleife zuordenen zu können. (die Arbeit könnte ich mit ersparen, wenn jemand die Schleifennummern der Feuerwehren im Landkreis Ebersberg hat. Auf dieser Site sind sie jedenfalls nicht hinterlegt)

Leider braucht die Aufzeichnung im WAV-Format recht viel Speicher. Ich würde daher gerne die Meldungen als MP3 aufzeichnen.

Ich habe auf meinem Testrechner zuerst lame und dann sox eingerichtet. Damit kann sox auch mp3s erstellen, allerdings müßte man dazu Parameter übergeben.

Danke für Tipps.
System: Toshiba Satelite Pro 4300, Ubuntu 5.04,

Buebchen
31.08.2005, 22:57
Es gibt noch die Parameter:

REC_COMD = Programm, das gestartet wird
REC_SUFF = Dateisuffix, der Datei, die geschrieben wird
REC_ARGS = Programmargumente für sox

Vorbelegungen der Werte:

REC_COMD= sox
REC_SUFF = .wav
REC_ARGS= -c 1

Magnet
08.09.2005, 14:37
Ich hatte das damals einfach gebaut, dass ein Script jede 5 Minuten in das Verzeichnis hineinschaut und wenn es eine Wave-Datei findet, diese über Lame in mp3 umwandelt und wegsortiert.

testman
08.09.2005, 15:13
hast du das script noch?

felix000
08.09.2005, 15:29
Original geschrieben von testman
hast du das script noch?

Ich hätte es als Batchdatei ;-)

Wenns dir was hilft, kann ichs dir gerne schicken.

funkwart
09.09.2005, 01:48
Hallo,

pack es doch bitte hier hinein. Wäre vielleicht für mehrere von Vorteil.

Danke,
Funkwart

Max K.
23.03.2006, 16:01
Hallo,

pack es doch bitte hier hinein. Wäre vielleicht für mehrere von Vorteil.

Danke,
Funkwart

Hi,

ich hab auch so ein ähnliches, kleines Script geschrieben.. (ziemlich unschön, aber erfüllt seinen zweck ;))



#!/bin/bash

for i in /home/max/fme-logs/record-current/*wav; do
if [ -f $i ] ; then
lame -b 96 -m m $i /home/max/fme-logs/record-archiv/`basename $i .wav`.mp3
rm -f $i
fi
done


Das ganze am besten "convert" nennen..
Dann in die /etc/crontab:



*/5 * * * * username /home/max/fme-logs/convert

Pfade müssen natüllich angepasst werden..

Mfg.

stoepf
15.10.2006, 18:12
Ich muss den alten Thread nochmal rauskramen. Ist es auch möglich nach Ende der Aufnahme ein ganzes Skript auszuführen?
Ich hab schon bissl mit den Parametern rumexperimentiert, leider war dann keine Aufzeichnung mehr da.

Mit REC_COMD 'skriptname' startet das Skript findet dann aber keine Audiodatei mehr im Verzeichnis.
Alternativ wäre natürlich die Version mit dem Cronjob möglich, aber den würd ich mir gerne sparen. Wieviel Last hat eigentlich so n minütlicher Cronjob?

Gruß Stoepf

LukeFirewalker
16.10.2006, 01:09
Das ist alles relativ. Wenn die Kiste rechenstark ist und das Skript nur kurz ist, dann fällt das nicht so ins gewicht. Wenn die Kiste eher schwach auf der Brust ist und das Skript sehr umfangreich, dann kanns schon anders aussehen.

Aber warum alle Minute? Für die Umwandlung in MP3 sollte doch alle Stunde locker reichen. Wenn doch früher reinhören möchtest, dann nimm dafür halt die wav-Datei.

Luke

stoepf
16.10.2006, 08:59
Ich will aber nicht das gesamte WAV vom Server abholen.
MP3 geht halt wesentlich schneller, da ich nur normale DSL1000-Upload-Geschwindigkeit zur Verfügung habe.

LukeFirewalker
16.10.2006, 12:50
Ok, wenn Du keinen direkten Zugriff auf den Server sondern nur via DSL hast...

Läuft noch mehr auf der Kiste oder nur die Auswertung?

Du könntest ja auch einen stündlichen Cronjob machen und wenn Du das Zeug dann doch mal früer brauchst, das Skript von Hand ausführen.

Luke

stoepf
16.10.2006, 20:38
Momentan lass ich das Skript alle 5 Minuten laufen, wenn nicht gerade eine Aufzeichnung stattgefunden hat, hat es ja nichts zu tun.
Falls doch noch jemand einen Tipp hat, wie man bestimmte Aktionen nach Ende der Aufzeichung ausführen kann würd ich mich freuen.

@Luke: Momentan läuft nur die Auswertung, soll auch nicht groß erweitert werden.

Buebchen
16.10.2006, 22:53
Man konnte jetzt natürlich das Skripte in der unixinout.c starten.

So sieht der Originalaufruf für sox aus:



sprintf(cmdline, "%s -v%f %s %s %s %s%s avg -%c", rec.cmd, (float)rec.volume / 100, rec.in_args, rec.file,
rec.out_args, rec.file, rec.suff, rec.chan);
system(cmdline);
sprintf(cmdline, "rm %s", rec.file);
system(cmdline);


cmdline wird also zum Programmaufruf für REC_COMD (in rec.cmd gespeichert) zusammengesetzt. Das ergibt in etwa:

sox -v1.0 -u -b -r %d -c 2 -t raw aufnahme -c 1 aufnahme.wav 1

Du könntest jetzt als system("/home/max/...") nach der letzten Zeile deine Batch starten. Dann sollte der die Aufnahmen direkt am Ende konvertieren.

Also etwa so:


sprintf(cmdline, "%s -v%f %s %s %s %s%s avg -%c", rec.cmd, (float)rec.volume / 100, rec.in_args, rec.file,
rec.out_args, rec.file, rec.suff, rec.chan);
system(cmdline);
sprintf(cmdline, "rm %s", rec.file);
system(cmdline);
<b>system("/home/max/...") ;</b>


Natürlich total ungetestet :-)

stoepf
18.10.2006, 21:01
@Buebchen:
Danke für den Tipp. Ich hab das jetzt soweit eingebaut, hab zwar bei der Verarbeitung noch ein kleines Rechteproblem aber das bekomm ich jetzt auch noch hin.

Hier noch der von mir eingefügte Code, vielleicht braucht es mal jemand,



sprintf(cmdline, "lame -f -V 5 %s%s %s.mp3", rec.file, rec.suff, rec.file);
system(cmdline);
sprintf(cmdline, "rm %s%s", rec.file, rec.suff);
system(cmdline);


Gruß Stoepf

SirFS
19.10.2006, 01:23
Also ich habe mein monitor zur Zeit so eingerichtet:



...
REC_COMD sox
REC_SUFF .mp3
REC_ARGS -c 1
...


Zum konvertieren nehme ich auch Lame, welches aber automatisch durch SOX aufgerufen wird, somit entfällt das WAV-File als Zwischendatei, da es direkt von RAW in MP3 umgewandelt wird. Es läuft somit auch kein Cron-Job dafür und eine Anpassung des Quellcodes ist damit auch nicht notwendig.

stoepf
19.10.2006, 08:35
@SirFS: Hat bei mir irgendwie nicht funktioniert, drum bin ich halt jetzt diesen Umweg gegangen.

SirFS
19.10.2006, 12:44
@SirFS: Hat bei mir irgendwie nicht funktioniert, drum bin ich halt jetzt diesen Umweg gegangen.

Hmm... keine Ahnung, lief bei mir ohne Probs...

stoepf
19.10.2006, 19:44
Hab grad nochmal nachgeschaut, mein sox hat gar keine support für mp3. Wenn mir da noch jemand einen Tipp hat, dann nehm ich den gerne an.

nepomuck
26.10.2006, 23:38
Es gibt noch die Parameter:
REC_COMD= sox
REC_SUFF = .wav
REC_ARGS= -c 1

Bei mir nimmt monitor nur den linken Kanal auf. Gibt es eine Option die es erlaubt, beide Kanäle aufzunehmen und daraus ein Stereo-Wav zu erzeugen?

Hintergrund: Ich will testweise RD und FW parallel monitoren (mit zwei Scannern) und bei Einsätzen anhand der Funkaufzeichnung die Einsatzabläufe beider Dienste vergleichen.

Andreas

SirFS
27.10.2006, 11:16
Bei mir nimmt monitor nur den linken Kanal auf. Gibt es eine Option die es erlaubt, beide Kanäle aufzunehmen und daraus ein Stereo-Wav zu erzeugen?

Hintergrund: Ich will testweise RD und FW parallel monitoren (mit zwei Scannern) und bei Einsätzen anhand der Funkaufzeichnung die Einsatzabläufe beider Dienste vergleichen.

Andreas

Probier mal bei dem Parameter REC_ARGS nicht "-c 1" sondern "-c 2" anzugeben, dann sollte es in Stereo aufgenommen werden ...

PS: Ich habe nur einen Kanal, deshalb "-c 1" :)