diff --git a/apps/confbridge/confbridge_manager.c b/apps/confbridge/confbridge_manager.c
index a1015300983c36a57c9af25f34cb88db594b00b7..51112ba7854bde2895d7ed5c18c8d540389e1180 100644
--- a/apps/confbridge/confbridge_manager.c
+++ b/apps/confbridge/confbridge_manager.c
@@ -388,34 +388,18 @@ static struct ast_stream *get_stream(struct ast_stream_topology *topology,
 	return NULL;
 }
 
-static struct ast_json *get_media_labels(struct confbridge_conference *conference,
+static void set_media_labels(struct confbridge_conference *conference,
 	struct ast_channel *src_chan, struct ast_channel *dest_chan, enum label_direction dir)
 {
 	struct ast_stream_topology *topology;
 	struct ast_stream *stream;
-	const char *curr_a_label;
-	const char *a_label = NULL;
-	const char *v_label = NULL;
-	struct ast_json *labels = ast_json_array_create();
+	struct ast_channel *chan = dir == LABEL_DIRECTION_SRC ? dest_chan : src_chan;
 
-	if (!labels) {
-		return NULL;
-	}
-
-	topology = ast_channel_get_stream_topology(dir == LABEL_DIRECTION_SRC ? src_chan : dest_chan);
-	stream = get_stream(topology, AST_MEDIA_TYPE_AUDIO);
-	curr_a_label = stream ? ast_stream_get_metadata(stream, "MSID:LABEL") : NULL;
-	a_label = curr_a_label ?: conference->bridge->uniqueid;
-	ast_json_array_append(labels, ast_json_string_create(a_label));
-
-	topology = ast_channel_get_stream_topology(dir == LABEL_DIRECTION_SRC ? dest_chan : src_chan);
+	topology = ast_channel_get_stream_topology(chan);
 	stream = get_stream(topology, AST_MEDIA_TYPE_VIDEO);
-	v_label = stream ? ast_stream_get_metadata(stream, "MSID:LABEL") : NULL;
-	if (v_label) {
-		ast_json_array_append(labels, ast_json_string_create(v_label));
+	if (stream) {
+		ast_stream_set_metadata(stream, "SDP:LABEL", ast_channel_uniqueid(chan));
 	}
-
-	return ast_json_pack("{s: o }", "media_source_track_labels", labels);
 }
 
 static void send_message(const char *msg_name, char *conf_name, struct ast_json *json_object,
@@ -505,7 +489,6 @@ static void send_event_to_participants(struct confbridge_conference *conference,
 	ao2_lock(conference);
 	AST_LIST_TRAVERSE(&conference->active_list, user, list) {
 		struct ast_json *json_object;
-		struct ast_json* source_json_labels = NULL;
 
 		/*
 		 * If the msg type is join, we need to capture all targets channel info so we can
@@ -514,7 +497,6 @@ static void send_event_to_participants(struct confbridge_conference *conference,
 		if (source_send_events && stasis_message_type(msg) == confbridge_join_type()) {
 			struct ast_channel_snapshot *target_snapshot;
 			struct ast_json *target_json_channel;
-			struct ast_json *target_json_labels;
 
 			target_snapshot = ast_channel_snapshot_get_latest(ast_channel_uniqueid(user->chan));
 			if (!target_snapshot) {
@@ -523,17 +505,15 @@ static void send_event_to_participants(struct confbridge_conference *conference,
 				continue;
 			}
 
-			target_json_labels = get_media_labels(conference, chan, user->chan, LABEL_DIRECTION_SRC);
-			target_json_channel = channel_to_json(target_snapshot, extras, target_json_labels);
+			set_media_labels(conference, chan, user->chan, LABEL_DIRECTION_SRC);
+			target_json_channel = channel_to_json(target_snapshot, extras, NULL);
 			ao2_ref(target_snapshot, -1);
-			ast_json_unref(target_json_labels);
 
 			if (!json_channels) {
 				json_channels = ast_json_array_create();
 				if (!json_channels) {
 					ast_log(LOG_ERROR, "Unable to allocate json array\n");
 					ast_json_unref(target_json_channel);
-					ast_json_unref(target_json_labels);
 					return;
 				}
 			}
@@ -555,11 +535,9 @@ static void send_event_to_participants(struct confbridge_conference *conference,
 			continue;
 		}
 
-		source_json_labels = get_media_labels(conference, chan, user->chan, LABEL_DIRECTION_DEST);
-		ast_json_object_update(extras, source_json_labels);
+		set_media_labels(conference, chan, user->chan, LABEL_DIRECTION_DEST);
 
-		json_object = pack_snapshots(obj->bridge, obj->channel, extras, source_json_labels, msg);
-		ast_json_unref(source_json_labels);
+		json_object = pack_snapshots(obj->bridge, obj->channel, extras, NULL, msg);
 
 		if (!json_object) {
 			ast_log(LOG_ERROR, "Unable to convert %s message to json\n", msg_name);
diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c
index 9c32b5c4eb8f32a449d2c6c8c5c0329c9b496f06..4f5a0b2744048b6db1b01bd14482b8163cd07dbc 100644
--- a/res/res_pjsip_sdp_rtp.c
+++ b/res/res_pjsip_sdp_rtp.c
@@ -1100,6 +1100,7 @@ static void add_msid_to_stream(struct ast_sip_session *session,
 	pj_str_t stmp;
 	pjmedia_sdp_attr *attr;
 	char msid[(AST_UUID_STR_LEN * 2) + 2];
+	const char *stream_label = ast_stream_get_metadata(stream, "SDP:LABEL");
 
 	if (!session->endpoint->media.webrtc) {
 		return;
@@ -1119,19 +1120,7 @@ static void add_msid_to_stream(struct ast_sip_session *session,
 	}
 
 	if (ast_strlen_zero(session_media->label)) {
-		/*
-		 * If this stream has already been assigned a label, use it.
-		 * This will ensure that a confbridge participant is known by
-		 * the same label by all other participants.
-		 */
-		const char *stream_label = ast_stream_get_metadata(stream, "MSID:LABEL");
-
-		if (!ast_strlen_zero(stream_label)) {
-			ast_copy_string(session_media->label, stream_label, sizeof(session_media->label));
-		} else {
 			ast_uuid_generate_str(session_media->label, sizeof(session_media->label));
-			ast_stream_set_metadata(stream, "MSID:LABEL", session_media->label);
-		}
 	}
 
 	snprintf(msid, sizeof(msid), "%s %s", session_media->mslabel, session_media->label);
@@ -1139,6 +1128,14 @@ static void add_msid_to_stream(struct ast_sip_session *session,
 		ast_codec_media_type2str(ast_stream_get_type(stream)), msid);
 	attr = pjmedia_sdp_attr_create(pool, "msid", pj_cstr(&stmp, msid));
 	pjmedia_sdp_attr_add(&media->attr_count, media->attr, attr);
+
+	/* 'label' must come after 'msid' */
+	if (!ast_strlen_zero(stream_label)) {
+		ast_debug(3, "Stream Label: %p %s %s\n", stream,
+			ast_codec_media_type2str(ast_stream_get_type(stream)), stream_label);
+		attr = pjmedia_sdp_attr_create(pool, "label", pj_cstr(&stmp, stream_label));
+		pjmedia_sdp_attr_add(&media->attr_count, media->attr, attr);
+	}
 }
 
 static void add_rtcp_fb_to_stream(struct ast_sip_session *session,