when the playlist is master playlist, there have many playlist. the workflow should continue if one of the playlist is broken.
Signed-off-by: Steven Liu <l...@chinaffmpeg.org> --- libavformat/hls.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index 3aee7a19ae..d2fafe0302 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -1408,8 +1408,11 @@ restart: reload: reload_count++; - if (reload_count > c->max_reload) + if (reload_count > c->max_reload) { + v->broken = 1; + v->needed = 0; return AVERROR_EOF; + } if (!v->finished && av_gettime_relative() - v->last_load_time >= reload_interval) { if ((ret = parse_playlist(c, v->url, v, NULL)) < 0) { @@ -1459,7 +1462,7 @@ reload: if (ret < 0) { if (ff_check_interrupt(c->interrupt_callback)) return AVERROR_EXIT; - av_log(v->parent, AV_LOG_WARNING, "Failed to open segment %d of playlist %d\n", + av_log(v->parent, AV_LOG_WARNING, "Failed to open segment %d of playlist %d, will reload\n", v->cur_seq_no, v->index); v->cur_seq_no += 1; @@ -1925,6 +1928,7 @@ static int hls_read_header(AVFormatContext *s) av_log(s, AV_LOG_ERROR, "Error when loading first segment '%s'\n", pls->segments[0]->url); avformat_free_context(pls->ctx); pls->ctx = NULL; + if (c->n_playlists > 1) continue; goto fail; } pls->ctx->pb = &pls->pb; -- 2.17.2 (Apple Git-113) _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".