32 lines
885 B
Bash
32 lines
885 B
Bash
|
|
#!/bin/bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
# Configuration
|
||
|
|
AUDIO_DEVICE="${AUDIO_DEVICE:-hw:1}" # ALSA device (run 'arecord -l' to list)
|
||
|
|
SEGMENT_SECONDS="${SEGMENT_SECONDS:-7200}" # 2 hours per file
|
||
|
|
RECORDINGS_DIR="${RECORDINGS_DIR:-$HOME/recordings}"
|
||
|
|
SOURCE_NAME="${SOURCE_NAME:-stationary}" # Prefix for filenames
|
||
|
|
|
||
|
|
mkdir -p "${RECORDINGS_DIR}"
|
||
|
|
|
||
|
|
echo "Starting recording..."
|
||
|
|
echo " Device: ${AUDIO_DEVICE}"
|
||
|
|
echo " Segment: ${SEGMENT_SECONDS}s"
|
||
|
|
echo " Output: ${RECORDINGS_DIR}/${SOURCE_NAME}-*.opus"
|
||
|
|
|
||
|
|
while true; do
|
||
|
|
ffmpeg -f alsa -ac 1 -i "${AUDIO_DEVICE}" \
|
||
|
|
-c:a libopus \
|
||
|
|
-b:a 32k \
|
||
|
|
-f segment \
|
||
|
|
-segment_time "${SEGMENT_SECONDS}" \
|
||
|
|
-strftime 1 \
|
||
|
|
-reset_timestamps 1 \
|
||
|
|
"${RECORDINGS_DIR}/${SOURCE_NAME}-%Y-%m-%d_%H-%M-%S.opus" \
|
||
|
|
2>&1 | while read line; do echo "[ffmpeg] $line"; done
|
||
|
|
|
||
|
|
echo "Recording stopped, restarting in 5s..."
|
||
|
|
sleep 5
|
||
|
|
done
|
||
|
|
|