feat: persist program info and gain settings, add known issues to README

This commit is contained in:
2025-06-30 11:25:50 +02:00
parent 06759d01ea
commit beab6209e9
3 changed files with 16 additions and 4 deletions

View File

@@ -87,3 +87,7 @@ Once your device is configured, you can verify that its mDNS advertisement is vi
- poetry run multicast_server.py
- sudo -E PATH="$PATH" bash ./start_frontend_https.sh
- bash start_mdns.sh
# Known issues:
- When running on a laptop there might be issues switching between usb and browser audio input since they use the same audio device

View File

@@ -37,7 +37,6 @@ audio_mode = st.selectbox(
help="Select the audio input source. Choose 'Webapp' for browser microphone or 'USB' for a connected hardware device."
)
if audio_mode in ["Webapp", "USB"]:
# Stream quality selection (temporarily disabled)
# quality = st.selectbox("Stream Quality", ["High (48kHz)", "Mid (24kHz)", "Fair (16kHz)"])
@@ -56,9 +55,14 @@ if audio_mode in ["Webapp", "USB"]:
value=default_name,
help="The primary name for your broadcast. Like the SSID of a WLAN, it identifies your stream for receivers."
)
raw_program_info = saved_settings.get('program_info', default_name)
if isinstance(raw_program_info, list) and raw_program_info:
default_program_info = raw_program_info[0]
else:
default_program_info = raw_program_info
program_info = st.text_input(
"Program Info",
value=default_name,
value=default_program_info,
help="Additional details about the broadcast program, such as its content or purpose. Shown to receivers for more context."
)
language = st.text_input(
@@ -109,6 +113,7 @@ if audio_mode in ["Webapp", "USB"]:
input_device = selected_option.split(":", 1)[0] if ":" in selected_option else selected_option
else:
input_device = None
import time
start_stream = st.button("Start Auracast")
stop_stream = st.button("Stop Auracast")
@@ -177,6 +182,7 @@ if audio_mode in ["Webapp", "USB"]:
),
]
)
try:
r = requests.post(f"{BACKEND_URL}/init", json=config.model_dump())
if r.status_code == 200:

View File

@@ -88,11 +88,10 @@ async def initialize(conf: auracast_config.AuracastConfigGroup):
# initialize the streams dict
# persist stream settings for later retrieval
# Derive audio_mode from first BIG audio_source
# Derive audio_mode and input_device from first BIG audio_source
first_source = conf.bigs[0].audio_source if conf.bigs else ''
if first_source.startswith('device:'):
audio_mode_persist = 'USB'
input_device = first_source.split(':', 1)[1] if ':' in first_source else 'default'
elif first_source == 'webrtc':
audio_mode_persist = 'Webapp'
@@ -100,11 +99,14 @@ async def initialize(conf: auracast_config.AuracastConfigGroup):
else:
audio_mode_persist = 'Network'
input_device = None
# Always persist all relevant stream settings
save_stream_settings({
'channel_names': [big.name for big in conf.bigs],
'languages': [big.language for big in conf.bigs],
'audio_mode': audio_mode_persist,
'input_device': input_device,
'program_info': [getattr(big, 'program_info', None) for big in conf.bigs],
'gain': [getattr(big, 'input_gain', 1.0) for big in conf.bigs],
'timestamp': datetime.utcnow().isoformat()
})
global_config_group = conf