diff --git a/subprojects/gst-plugins-bad/ext/dtls/gstdtlsenc.c b/subprojects/gst-plugins-bad/ext/dtls/gstdtlsenc.c
index d344b96eaf..e61eb91657 100644
--- a/subprojects/gst-plugins-bad/ext/dtls/gstdtlsenc.c
+++ b/subprojects/gst-plugins-bad/ext/dtls/gstdtlsenc.c
@@ -480,13 +480,18 @@ src_task_loop (GstPad * pad)
 
   if (self->send_initial_events) {
     GstSegment segment;
-    gchar s_id[32];
+    gchar *stream_id;
     GstCaps *caps;
+    GstEvent *stream_start_event;
 
     self->send_initial_events = FALSE;
 
-    g_snprintf (s_id, sizeof (s_id), "dtlsenc-%08x", g_random_int ());
-    gst_pad_push_event (self->src, gst_event_new_stream_start (s_id));
+    stream_id =
+        gst_pad_create_stream_id (self->src, GST_ELEMENT_CAST (self), NULL);
+    stream_start_event = gst_event_new_stream_start (stream_id);
+    gst_event_set_group_id (stream_start_event, gst_util_group_id_next ());
+    gst_pad_push_event (self->src, stream_start_event);
+    g_free (stream_id);
     caps = gst_caps_new_empty_simple ("application/x-dtls");
     gst_pad_push_event (self->src, gst_event_new_caps (caps));
     gst_caps_unref (caps);