diff --git a/components/audio/src/source.cpp b/components/audio/src/source.cpp
index 15b99c08611732fd51751f8bd63c18ffc1ec196b..904433edffc15acfcda9cd00369701bf8adba4a5 100644
--- a/components/audio/src/source.cpp
+++ b/components/audio/src/source.cpp
@@ -110,6 +110,7 @@ Source::Source(nlohmann::json &config) : ftl::Configurable(config), buffer_(4800
         // Remove one interval since the audio starts from the last frame
 		frameset_.timestamp = ts - ftl::timer::getInterval();
 
+		frameset_.id = 0;
 		frameset_.count = 1;
 		frameset_.stale = false;
 
diff --git a/components/streams/src/receiver.cpp b/components/streams/src/receiver.cpp
index 1151f1e342654e5c1c6835f6a9da1b9b11a684e8..8ed25bf4c2eb7195c1895f4ba21283289d600c35 100644
--- a/components/streams/src/receiver.cpp
+++ b/components/streams/src/receiver.cpp
@@ -125,6 +125,7 @@ void Receiver::_processAudio(const StreamPacket &spkt, const Packet &pkt) {
 	if (audio_cb_) {
 		// Create an audio frameset wrapper.
 		ftl::audio::FrameSet fs;
+		fs.id = 0;
 		fs.timestamp = frame.timestamp;
 		fs.count = 1;
 		fs.stale = false;
diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp
index a32a4a848766b7a57bf28c52e7cd984fa2a1da43..0068f5ad3821d87045400c2e0954bddfe50891af 100644
--- a/components/streams/src/sender.cpp
+++ b/components/streams/src/sender.cpp
@@ -66,7 +66,7 @@ void Sender::post(const ftl::audio::FrameSet &fs) {
 		StreamPacket spkt;
 		spkt.version = 4;
 		spkt.timestamp = fs.timestamp;
-		spkt.streamID = 0; //fs.id;
+		spkt.streamID = fs.id;
 		spkt.frame_number = i;
 		spkt.channel = Channel::Audio;
 
diff --git a/components/streams/src/stream.cpp b/components/streams/src/stream.cpp
index 2ece7be127e15f9ff4a6ca294133e266542a38db..23cd0659884ed67200e0f06523feb3debe05b1d8 100644
--- a/components/streams/src/stream.cpp
+++ b/components/streams/src/stream.cpp
@@ -132,9 +132,11 @@ int Muxer::_lookup(int sid, int ssid) {
 		lk.unlock();
 		{
 			UNIQUE_LOCK(mutex_, lk2);
-			int nid = nid_++;
-			se.maps.push_back(nid);
-			revmap_.push_back({sid,ssid});
+			if (ssid >= se.maps.size()) {
+				int nid = nid_++;
+				se.maps.push_back(nid);
+				revmap_.push_back({sid,ssid});
+			}
 		}
 		lk.lock();
 	}