diff --git a/bridges/bridge_softmix.c b/bridges/bridge_softmix.c
index cf61340f25059948da5e68ce92c9d5fb39090801..290ea2b29221a831490c07de133f725565ebf805 100644
--- a/bridges/bridge_softmix.c
+++ b/bridges/bridge_softmix.c
@@ -502,6 +502,7 @@ static int append_source_streams(struct ast_stream_topology *dest,
 	const struct ast_stream_topology *source)
 {
 	int i;
+	const char *stream_identify;
 
 	for (i = 0; i < ast_stream_topology_get_count(source); ++i) {
 		struct ast_stream *stream;
@@ -513,8 +514,13 @@ static int append_source_streams(struct ast_stream_topology *dest,
 			continue;
 		}
 
+		stream_identify = ast_stream_get_metadata(stream, "MSID:LABEL");
+		if (!stream_identify) {
+			stream_identify = ast_stream_get_name(stream);
+		}
+
 		if (ast_asprintf(&stream_clone_name, "%s_%s_%s", SOFTBRIDGE_VIDEO_DEST_PREFIX,
-			channel_name, ast_stream_get_name(stream)) < 0) {
+			channel_name, stream_identify) < 0) {
 			return -1;
 		}
 
@@ -2186,6 +2192,7 @@ static void softmix_bridge_stream_topology_changed(struct ast_bridge *bridge, st
 
 		for (i = 0; i < ast_stream_topology_get_count(topology); ++i) {
 			struct ast_stream *stream = ast_stream_topology_get_stream(topology, i);
+			const char *stream_identify;
 
 			if (is_video_source(stream)) {
 				AST_VECTOR_APPEND(&media_types, AST_MEDIA_TYPE_VIDEO);
@@ -2202,7 +2209,12 @@ static void softmix_bridge_stream_topology_changed(struct ast_bridge *bridge, st
 				 */
 				ast_channel_unlock(participant->chan);
 				ast_bridge_channel_unlock(participant);
-				map_source_to_destinations(ast_stream_get_name(stream), ast_channel_name(participant->chan),
+
+				stream_identify = ast_stream_get_metadata(stream, "MSID:LABEL");
+				if (!stream_identify) {
+					stream_identify = ast_stream_get_name(stream);
+				}
+				map_source_to_destinations(stream_identify, ast_channel_name(participant->chan),
 					AST_VECTOR_SIZE(&media_types) - 1, &bridge->channels);
 				ast_bridge_channel_lock(participant);
 				ast_channel_lock(participant->chan);
diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c
index c18627ed3d84bcd09bf0e7d00d7408e13fb5508e..c2b7d670374d9f1f9f0bcf4500df87abb445d850 100644
--- a/res/res_pjsip_sdp_rtp.c
+++ b/res/res_pjsip_sdp_rtp.c
@@ -1157,7 +1157,9 @@ static void add_msid_to_stream(struct ast_sip_session *session,
 	}
 
 	if (ast_strlen_zero(session_media->label)) {
-			ast_uuid_generate_str(session_media->label, sizeof(session_media->label));
+		ast_uuid_generate_str(session_media->label, sizeof(session_media->label));
+		/* add for stream identification to replace stream_name */
+		ast_stream_set_metadata(stream, "MSID:LABEL", session_media->label);
 	}
 
 	snprintf(msid, sizeof(msid), "%s %s", session_media->mslabel, session_media->label);