diff --git a/libavformat/utils.c b/libavformat/utils.c
index 28279307373e87d1be5aff3df6d96807f52fe192..73f26b39c219e57d354454b96405f317d2b9a525 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;