BirdNET-stream/daemon/birdnet_streaming.sh

52 lines
1.2 KiB
Bash
Executable File

#! /usr/bin/env bash
DEBUG=${DEBUG:-1}
export PULSE_RUNTIME_PATH="/run/user/$(id -u)/pulse/"
debug() {
if [ $DEBUG -eq 1 ]; then
echo "$1"
fi
}
stream() {
DEVICE=$1
debug "Launching audio stream from $DEVICE at icecast://source:secret@$ICECAST_HOST:$ICECAST_PORT/$ICECAST_MOUNT"
ffmpeg -nostdin -hide_banner -loglevel error -nostats \
-f pulse -i $DEVICE -vn -acodec libmp3lame -ac 1 -ar 48000 -content_type 'audio/mpeg' \
-f mp3 "icecast://source:${ICECAST_PASSWORD}@${ICECAST_HOST}:${ICECAST_PORT}/${ICECAST_MOUNT}" -listen 1
}
config_filepath="./config/birdnet.conf"
if [ -f "$config_filepath" ]; then
source "$config_filepath"
else
echo "Config file not found: $config_filepath"
exit 1
fi
if [[ -z $AUDIO_DEVICE ]]; then
echo "AUDIO_DEVICE is not set"
exit 1
fi
if [[ -z $ICECAST_HOST ]]; then
echo "ICECAST_HOST is not set"
exit 1
fi
if [[ -z $ICECAST_PORT ]]; then
echo "ICECAST_PORT is not set"
exit 1
fi
if [[ -z $ICECAST_MOUNT ]]; then
echo "ICECAST_MOUNT is not set"
exit 1
fi
if [[ -z $ICECAST_PASSWORD ]]; then
echo "ICECAST_PASSWORD is not set"
exit 1
fi
stream $AUDIO_DEVICE