Запис 145.500 МГц з SDR-приймача для історії
Архівний запис.
Ми вже розібралися із записом у файл з SDR-приймача, тож тепер можна зробити аудіоархів переговорів на викличній частоті. Згадуємо нотатку про запис зі сканера і пробуємо об’єднати все в один зручний скрипт.
Для роботи скрипта, описаного нижче, потрібен налаштований сервер OpenWebRX.
#!/bin/bash
# частота мониторинга, в данном случае вызывной канал на 2м диапазоне
FREQ=145500000
# основная папка для складывания записей
ARCHIVE_FOLDER="/tmp/sdr_archive"
# временный файл
TEMP_FILE="/tmp/ham_145500.ogg"
# проверяем что бы существовал pipe для записи уровня шумодава
fifo_file="/tmp/record_squelch_pipe"
if [ -f "$fifo_file" ]
then
echo "squelch pipe $fifo_file founded."
else
echo "$fifo_file not found. created it"
mkfifo $fifo_file
fi
# подсчет частоты сдвига
# числа 145000000 и 2000000 нужно брать из OpenWebRX сервера: center_freq и samp_rate соответственно
FREQ_OFFSET=`python -c "print float(145000000-$FREQ)/2000000"`
# записываем занчение выше которого должен срабатывать шумодав
echo "0.0002" > $fifo_file
# функция которая ждет пока не появится звук на входе звуковой карте
# и остановится когда звук пропадет
function vox() {
echo "-----[ START recording cycle ]-----"
rm -rf $TEMP_FILE
nc -v 127.0.0.1 4951 | csdr convert_u8_f | csdr shift_addition_cc $FREQ_OFFSET | csdr fir_decimate_cc 181 0.000828675 HAMMING | csdr squelch_and_smeter_cc --fifo $fifo_file --outfifo /dev/null 5 1 | csdr fmdemod_quadri_cf | csdr limit_ff | csdr deemphasis_nfm_ff 11025 | csdr fastagc_ff | csdr convert_f_s16 | sox -r 11025 -e signed -b 16 -c 1 -t raw - $TEMP_FILE silence 1 00:01 0.1% 1 00:03 3%
wait
echo "-----[ END recording cycle ]-----"
echo "-----[ prepare file ]-----"
# проверяем что полученный в итоге файл имеет хоть какой-то размер (800байт)
for i in $TEMP_FILE ; do
b=`stat -c %s "$i"`
if [ $b -ge 800 ] ; then
# создаем подпапку 2017/10/14
ARCHIVE_SUB_FOLDER=`date +%Y/%m/%d`
mkdir -p $ARCHIVE_FOLDER/$ARCHIVE_SUB_FOLDER
# формируем имя файла из даты когда закончилась запись
NAME=`date +%s.%H_%M_%S`
FILENAME=$ARCHIVE_FOLDER/$ARCHIVE_SUB_FOLDER/$NAME.ogg
echo "MOVE $TEMP_FILE to $FILENAME"
mv $TEMP_FILE $FILENAME
else
rm -rf $TEMP_FILE
fi
done
echo "-----[ end cycle ]-----"
# повторяем цикл
vox
}
# запускаем функцию записи в цикле
vox
Далі, як завжди, даємо права на запуск chmod +x ./record_from_sdr.sh і запускаємо ./record_from_sdr.sh.
UPDATE: 15 жовтня 2017
Щоб зменшити розмір файлів і зробити їх сумісними з більшістю браузерів, я вирішив перейти з OGG на MP3.
Для цього в Ubuntu треба встановити пакет sudo apt-get install libsox-fmt-mp3
і змінити в скрипті розширення з .ogg на .mp3.
Сконвертувати всі .ogg файли в папці можна командою:
for f in *.ogg; do sox "$f" "${f%.ogg}.mp3"; done