diff --git a/server/src/audio.rs b/server/src/audio.rs index 8c0812c..bf08362 100644 --- a/server/src/audio.rs +++ b/server/src/audio.rs @@ -131,7 +131,9 @@ pub async fn ear(alsa_dev: &str, id: u32) -> anyhow::Result { // ─── server/src/audio.rs: build_pipeline_desc() (replace entire fn) ───────── fn build_pipeline_desc(dev: &str) -> anyhow::Result { let reg = gst::Registry::get(); - let enc = ["fdkaacenc", "voaacenc", "avenc_aac"] + + // Pick the first available encoder + let enc = ["avenc_aac", "fdkaacenc", "voaacenc"] .into_iter() .find(|&e| { reg.find_plugin(e).is_some() @@ -139,10 +141,13 @@ fn build_pipeline_desc(dev: &str) -> anyhow::Result { }) .ok_or_else(|| anyhow!("no AAC encoder plugin available"))?; + // All encoders are asked for raw elementary AAC; aacparse + + // capsfilter converts it to **ADTS** unconditionally. Ok(format!( "alsasrc device=\"{dev}\" do-timestamp=true ! \ audio/x-raw,channels=2,rate=48000 ! {enc} bitrate=192000 ! \ - aacparse add-adts=true ! \ + aacparse ! \ + capsfilter caps=audio/mpeg,stream-format=adts,channels=2,rate=48000 ! \ queue ! appsink name=asink emit-signals=true" )) } \ No newline at end of file