audio record, autosplit and stream

Fórumok

Szeretnék analóg audió jelet felvenni desktop PC-n egy ubuntu serverrel.
arecord ami segít ebben nekem.

Ami csavarás lenne benne, hogy folyamatos felvételt 1 órás darabokra kéne bontani automatikusan, és mind ezt mp3 formátumban.

Azt tudom, hogy az arecord -nak van ilyen opciója, hogy megadott mp.-enként új file-ba ment.

arecord -f cd -D hw... --max-file-size=60 percenkent.wav

Azt is tudom, hogy ha átadom a lame-nek, akkor egyből mp3-ba tárolja:

arecord -f cd -D hw... | lame -b 128 -m m - audio.mp3

Ebben az esetben sajnos nincs auto split.
Nem szeretnék cron megoldásokat, mint pl óránként leáll és elindul, ugyanis a kettő között kiesés lesz.

Van erre valami ötlete valakinek, esetleg kész megoldás ?

Hozzászólások

Pár hete kellet hasonlót csinálnom, én így oldottam meg:


#!/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
cd `echo "$0" | awk -F 'srec' '{print $1}'`

SAVEDIR="/mnt/sda4/sound"

while true
do
DATE=`date +%Y-%m-%d`
TIME=`date +%T`

if ! [ -d $SAVEDIR/$DATE ]; then
mkdir $SAVEDIR/$DATE
fi

arecord -f S16_LE -c1 -r 22050 -t raw -d 300 | lame -r -s 22.05 -m m -b 96 - $SAVEDIR/$DATE/$TIME.mp3
done

Ha a DATE és TIME változók értékadása között lesz éjfél, abból felfordulás lesz. Valahogy így jobb:

DATE=`date +%Y-%m-%d+%T`
TIME=`cut -d+ -f2 <<<"$DATE"`
DATE=`cut -d+ -f1 <<<"$DATE"`

Szerk.: Bash-t feltételeztem.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Jogos az észrevétel. Szerencsére nem kell izgulnom emiatt, mert a végleges változat csak reggel 5-től este 11-ig fut és óránként splitel.

Ha már belemerültünk... azt kellene megcsinálnom, hogy az így lementett mp3-akat egy weblapon megjelenítve valamiféle playerrel (flash?, html5?) le kellene lejátszani, úgy hogy lehessen tekergetni az audio file-ban és vizuálisan meg legyen jelenítve a tartalom. Egyszerűbben... lehessen látni, hogy mit érdemes visszahllgatni. Létezik erre valami előregyártott megoldás?

Én az első metódust alkalmaznám. Írnék egy scriptet, amely a háttérben írogatja ezeket a split-elt hangfile-okat, előtérben pedig nézi, van-e már elkészült file. Amit ír, ahhoz nem nyúl, ami már elkészült, azt mp3-má konvertálja a lame-val, majd törli az eredeti wav-ot. Ezt kb. fél percenként elég ellenőrizni, így a sleep 30 miatt sok erőforrást sem vinne, csak amikor ténylegesen konvertál.

Ezek szerint nem használsz pulseaudio hangszervert?

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Jogos.

Arra gondoltam, hogy óránként lefut egy szript, ami ha wav-ot talál az alkünyvtárban, akkor mp3-ba convertálja.
Ez veszélyes, mivel lesz egy wav amit éppen írni fog az arecord.

szerk:
jha, most látom, hogy te erre már gondoltál.

Akkor mit javasolsz erre? Hogy vizsgáljam, hogy kész-e a file?

Ha folyamatos a rögzítés, akkor az utolsó modify time-mal rendelkező készül éppen. Másfelől az arecord sorszámoz. A legnagyobb sorszámú készül éppen. Harmadrészt megnézed pl. 1 másodperc eltéréssel a file-okat. Amelyiknek változott a mérete, az készül. Mivel hangról van szó, garantáltan változik a mérete a készülő file-nak. Mondtam három tippet. Én egyébként talán a filenévben található sorszámból indulnék ki. Az utolsót nem piszkálnám, a többit igen. Ha csak egy file-unk van, azt nem piszkáljuk.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE