47 lines
1.3 KiB
Bash
Executable File
47 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Check if browser playback is enabled
|
|
if [ "$ENABLE_BROWSER_PLAYBACK" = "1" ]; then
|
|
echo "Browser playback enabled - setting up audio streaming..."
|
|
|
|
echo "Starting PulseAudio..."
|
|
pulseaudio --start --log-target=syslog --system=false
|
|
|
|
# Wait a moment for PulseAudio to initialize
|
|
sleep 2
|
|
|
|
# Create virtual sink
|
|
echo "Creating virtual audio sink..."
|
|
pactl load-module module-null-sink sink_name=virtual_output sink_properties=device.description="Virtual_Audio_Output"
|
|
|
|
# Make it the default sink
|
|
pactl set-default-sink virtual_output
|
|
|
|
# Create stream directory if it doesn't exist
|
|
mkdir -p ./dist/frontend/stream
|
|
|
|
# Start FFmpeg streaming in background
|
|
echo "Starting audio stream..."
|
|
|
|
FFMPEG_OPTS="-loglevel error -f pulse \
|
|
-i virtual_output.monitor \
|
|
-c:a aac -b:a 128k \
|
|
-f hls \
|
|
-hls_time 1 \
|
|
-hls_list_size 3 \
|
|
-hls_flags delete_segments+append_list \
|
|
-hls_segment_type mpegts \
|
|
-hls_segment_filename ./dist/frontend/stream/segment_%03d.ts \
|
|
./dist/frontend/stream/audio.m3u8"
|
|
|
|
echo "FFmpeg options: $FFMPEG_OPTS"
|
|
|
|
ffmpeg $FFMPEG_OPTS &
|
|
else
|
|
echo "Browser playback disabled - skipping audio streaming setup"
|
|
fi
|
|
|
|
# Start the Node.js server
|
|
echo "Starting Node.js server..."
|
|
exec node build/server.js
|