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 ?
- 2210 megtekinté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
- A hozzászóláshoz be kell jelentkezni
szerk:
Látom a '-d 300' opciót.
Na most az a kérdés, hogy mennyi idő telik el két arecord között.
Mert ha pl 50ms, akkor már sajna az is kiesés.
- A hozzászóláshoz be kell jelentkezni
Ebben az esetben mindenképpen van pár ms kiesés, de nálam ez nem volt lényeges mert beszédet kellett rögzíteni.
Kiesésmentes rögzítéshez én is a locsemege által lentebb vázolt kétprogramos módszert javasolnám.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
É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
- A hozzászóláshoz be kell jelentkezni
Én is erre gondoltam, csak napi mp3-ba tömörítéssel.
- A hozzászóláshoz be kell jelentkezni
Én nem várnám össze a napi anyagot. Minek? Ha file-onként csinálod, egyenletesebb a terhelés, s naprakészebb - azaz percrekészebb :) - a hanganyagod.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Mind jó, köszi.
- A hozzászóláshoz be kell jelentkezni