feat: persist program info and gain settings, add known issues to README
This commit is contained in:
@@ -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
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user