diff --git a/libavformat/utils.c b/libavformat/utils.c
index 225b9f22da70592e68e8ddff8c6f27b94621cd13..be4d6f78af7d23a6ca20c8124727fd68cbccbfb9 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2529,7 +2529,7 @@ int av_find_best_stream(AVFormatContext *ic,
         if (best_count >= st->codec_info_nb_frames)
             continue;
         best_count = st->codec_info_nb_frames;
-        ret = i;
+        ret = program ? program[i] : i;
         best_decoder = decoder;
         if (program && i == nb_streams - 1 && ret < 0) {
             program = NULL;