ubuntuusers.de

SOX record --> mp3 speichern?

Status: Ungelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

pfannkuchen

Anmeldungsdatum:
7. Januar 2007

Beiträge: 378

Hi,

ich habe nun gefühlt eine Woche gebraucht um die Syntax von SOX zu verstehen, bin jetzt aber sehr zufrieden mit dem ergebnis:

1
2

sox -t alsa plughw:1,0 /home/user/audio/Recording_"$(date +%Y%m%d_%H%M%S)".wav silence 1 0.3 1% 1 8.0 1% : newfile : restart

(ich brauche das ganze um Gespräche zu speichern....)

Allerdings nimmt SOX das in Wav auf, was in meinem fall extreme Dateigrößen werden, da es sich um sehr lange gespräche handelt.

Wie kann ich die ganze Schose direkt als mp3 umwandeln? und das dann so klein wie nur irgend möglich?

Gruß und Dank shconmal!

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

Du kannst mit dem Parameter -t auch das Format der Ausgabedatei festplegen. Allerdings wird SoX unter Ubuntu ohne MP3-Unterstützung gebaut (siehe auch sox -H). Du könntest alternativ mit Ogg Vorbis arbeiten. Dein Befehl müsste dann vermutlich wie folgt aussehen:

sox -t alsa plughw:1,0 -t vorbis /home/user/audio/Recording_"$(date +%Y%m%d_%H%M%S)".ogg silence 1 0.3 1% 1 8.0 1% : newfile : restart 

Alternativ sollte sich das auch mit FFmpeg mit MP3 umsetzen lassen. Grob in deine Richtung:

ffmpeg -f alsa -ac 2 -i hw:1,0 /home/user/audio/Recording_"$(date +%Y%m%d_%H%M%S)".mp3 

pfannkuchen

(Themenstarter)

Anmeldungsdatum:
7. Januar 2007

Beiträge: 378

Hi,

danke! Ich habe mir SOX neu gebaut, diesmal mit MP3 Support! Das ganze rufe ich jetzt so auf:

1
sox -t alsa plughw:1,0 -C 64.99 --buffer 325000 /home/pi/audio/Recording_"$(date +%Y%m%d_%H%M%S)".mp3 silence 1 0.3 1% 1 8.0 1% : newfile : restart

Nun die nächste große Frage: Wie bekomme ich das Ding automatisch beim booten gestartet und dann immer am laufen gehalten (also auch neustart bei absturz und so?)

Any direction?

Gruß und Dank!

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

pfannkuchen schrieb:

Nun die nächste große Frage: Wie bekomme ich das Ding automatisch beim booten gestartet und dann immer am laufen gehalten (also auch neustart bei absturz und so?)

Any direction?

Wenn du das als systemweiten Dienst laufen lassen möchtest, dann ist deine „Direction“ systemd. Eine Unit kann man entsprechend konfigurieren, dass die bei Programmabsturz einen Dienst neu startet. Im Detail bin ich da aber überfragt.

Wenn die Gesprächsaufnahmen Teil einer kritischen Infrastruktur sind, solltest du auch sicherstellen, dass du bei einem unerwarteten Abbruch der Aufnahme keine korrupte Audiodatei hast. Da solltest du dich ggf. nochmal über geeignete Audioformate informieren. Für lange Aufnahmen eignet sich WAV übrigens so oder so nicht, weil das Format auf 4 GB Dateigröße limitiert ist.

Falls du konkretere Vorschläge brauchst, dann müsstest du evtl. deinen Anwendungsfall nochmal genauer beschreiben. Im Moment wissen wir nur, dass du vermutlich den Mikrofoneingang auf einem Audiogerät über ALSA permanent aufnehmen möchtest. Sollen das irgendwie Audioprotokolle von Sitzungen sein?

pfannkuchen

(Themenstarter)

Anmeldungsdatum:
7. Januar 2007

Beiträge: 378

Hi,

nein, ich werde im Sommer einige Monate mit einem Freund mit dem Motorrad in Zentralasien unterwegs sein... und da wollen wir unser dummes Gequatsche aufnehmen, denn irgendwie ist das zusammengebastelt immer eine schöne Erinnerung. (https://youtu.be/qoJh2URDtGc) Für die kommunikation haben wir jeder so ein Amateurfunk Walkitalki und ein Headset im Helm. Ich will nun ein klitzekleines 3. Walkitalki mit einem raspberry (ja ich weis es ist ein ubuntuforum, aber im Moment mache ich ja auch alles auf ner ubuntu kiste^^) koppeln, welcher zum einen unser gebrabbel aufnehmen soll und gleichzeitig GPS tracks speichern soll... und um das irgendwie nachvollziehbar zu machen will ich das in schöne separate files gepackt haben. Also wenn da mal ein file Korupt ist,... auch kein weltuntergang^^

ich hab jetzt erstmal zum testen den befehl in die rc.local gepackt... scheint erstmal zu funktionieren, nur dass ich eben nicht sichergehen kann wie stabil SOX läuft....

Gruß

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

Entschuldige bitte, jetzt war mir dein Thema durchgerutscht. Ich wollte dir eigentlich noch viel Erfolg mit dem Projekt und euch beiden viel Spaß auf der Tour wünschen.

pfannkuchen schrieb:

ich hab jetzt erstmal zum testen den befehl in die rc.local gepackt... scheint erstmal zu funktionieren, nur dass ich eben nicht sichergehen kann wie stabil SOX läuft....

Die rc.local wird letzten Endes auch nur von systemd als Skript ausgeführt. Aber abgesehen von der Prozessüberwachung bzw. einem automatischen Respawn ist diese Variante nach wie vor legitim. Außerdem ist ein Respawn eh nicht garantiert, wenn SOX bspw. hängen bleibt statt „korrekt“ abzustürzen.

Aber über SOX selber würde ich mir weniger Sorgen machen. Du führst es ja schon so aus, dass in Gesprächspausen die Aufnahme beendet und bei Gesprächsaufnahme in einer neuen Datei fortgesetzt wird. Ich vermute mal, dass du die Aufnahmen am Tagesende überträgst und dann sieht man ja, ob es Probleme gab.

Als Alternative zu MP3 sollte man gerade für lange Audiodateien auf jeden Fall noch Opus im Auge behalten. Das hat sogar einen Reduktionsmodus, der auf menschliche Sprache spezialisiert ist.

Antworten |