https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4091

--- gst-plugins-good-1.26.2/gst/flv/gstflvmux.c.orig
+++ gst-plugins-good-1.26.2/gst/flv/gstflvmux.c
@@ -1994,16 +1994,12 @@
           break;
         }
 
-        t = gst_flv_mux_segment_to_running_time (&apad->segment,
-            GST_BUFFER_DTS_OR_PTS (buffer));
+        if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DTS_OR_PTS (buffer))) {
+          t = gst_flv_mux_segment_to_running_time (&apad->segment,
+              GST_BUFFER_DTS_OR_PTS (buffer));
+        }
 
-        if (!GST_CLOCK_TIME_IS_VALID (t)) {
-          GST_WARNING_OBJECT (apad, "Buffer has no timestamp: %" GST_PTR_FORMAT,
-              buffer);
-          gst_object_replace ((GstObject **) & best, GST_OBJECT (apad));
-          best_ts = GST_CLOCK_TIME_NONE;
-          done = TRUE;
-        } else if (!GST_CLOCK_TIME_IS_VALID (best_ts) ||
+        if (!GST_CLOCK_TIME_IS_VALID (best_ts) ||
             (GST_CLOCK_TIME_IS_VALID (t) && t < best_ts)) {
           gst_object_replace ((GstObject **) & best, GST_OBJECT (apad));
           best_ts = t;
@@ -2227,20 +2223,21 @@
 gst_flv_mux_get_next_time (GstAggregator * aggregator)
 {
   GstFlvMux *mux = GST_FLV_MUX (aggregator);
-  GstFlvMuxPad *best = NULL;
-  GstClockTime best_time = GST_CLOCK_TIME_NONE;
+  GstAggregatorPad *agg_audio_pad = GST_AGGREGATOR_PAD_CAST (mux->audio_pad);
+  GstAggregatorPad *agg_video_pad = GST_AGGREGATOR_PAD_CAST (mux->video_pad);
 
   GST_OBJECT_LOCK (aggregator);
   if (mux->state == GST_FLV_MUX_STATE_HEADER &&
       ((mux->audio_pad && mux->audio_pad->codec == G_MAXUINT) ||
           (mux->video_pad && mux->video_pad->codec == G_MAXUINT)))
     goto wait_for_data;
-  GST_OBJECT_UNLOCK (aggregator);
 
-  best = gst_flv_mux_find_best_pad (aggregator, &best_time, TRUE);
-  gst_clear_object (&best);
+  if (!((agg_audio_pad && gst_aggregator_pad_has_buffer (agg_audio_pad)) ||
+          (agg_video_pad && gst_aggregator_pad_has_buffer (agg_video_pad))))
+    goto wait_for_data;
+  GST_OBJECT_UNLOCK (aggregator);
 
-  return best_time;
+  return gst_aggregator_simple_get_next_time (aggregator);
 
 wait_for_data:
   GST_OBJECT_UNLOCK (aggregator);