2016-03-27 2:42 GMT+08:00 Bodecs Bela <bode...@vivanet.hu>: > > > 2016.03.26. 15:10 keltezéssel, Steven Liu írta: > >> Because the hls_flags use delete_segments flag can delete the old >> >> segment files and instead of the hls_wrap option, so remove it. >> >> I suggest to leave hls_wrap option to be available. If you use this > option, the set of output file names is the same as the value of hls_wrap, > so it depends on you and sometimes it is very convinent. Mainly when you > use ffmpeg in scripting environment. > > There have a problem:
There are 3 segment files in playlist,set hls_time 2,and the keyframe is not uniform: test-0.ts test-1.ts test-2.ts It's dangerous when refreshing the segment files for player. There are repeated or jump segments problem. Signed-off-by: LiuQi <li...@gosun.com> >> >> --- >> >> doc/muxers.texi | 9 --------- >> >> libavformat/hlsenc.c | 8 +++----- >> >> 2 files changed, 3 insertions(+), 14 deletions(-) >> >> >> diff --git a/doc/muxers.texi b/doc/muxers.texi >> >> index c36c72c..4dabfd1 100644 >> >> --- a/doc/muxers.texi >> >> +++ b/doc/muxers.texi >> >> @@ -284,15 +284,6 @@ Set output format options using a :-separated list of >> key=value >> >> parameters. Values containing @code{:} special characters must be >> >> escaped. >> >> >> >> -@item hls_wrap @var{wrap} >> >> -Set the number after which the segment filename number (the number >> >> -specified in each segment file) wraps. If set to 0 the number will be >> >> -never wrapped. Default value is 0. >> >> - >> >> -This option is useful to avoid to fill the disk with many segment >> >> -files, and limits the maximum number of segment files written to disk >> >> -to @var{wrap}. >> >> - >> >> @item start_number @var{number} >> >> Start the playlist sequence number from @var{number}. Default value is >> >> 0. >> >> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c >> >> index fd36b21..a22543a 100644 >> >> --- a/libavformat/hlsenc.c >> >> +++ b/libavformat/hlsenc.c >> >> @@ -84,7 +84,6 @@ typedef struct HLSContext { >> >> >> >> float time; // Set by a private option. >> >> int max_nb_segments; // Set by a private option. >> >> - int wrap; // Set by a private option. >> >> uint32_t flags; // enum HLSFlags >> >> uint32_t pl_type; // enum PlaylistType >> >> char *segment_filename; >> >> @@ -373,7 +372,7 @@ static int hls_append_segment(struct AVFormatContext >> *s, HLSContext *hls, double >> >> en = hls->segments; >> >> hls->segments = en->next; >> >> if (en && hls->flags & HLS_DELETE_SEGMENTS && >> >> - !(hls->flags & HLS_SINGLE_FILE || hls->wrap)) { >> >> + !(hls->flags & HLS_SINGLE_FILE)) { >> >> en->next = hls->old_segments; >> >> hls->old_segments = en; >> >> if ((ret = hls_delete_old_segments(hls)) < 0) >> >> @@ -561,13 +560,13 @@ static int hls_start(AVFormatContext *s) >> >> av_free(fn_copy); >> >> } >> >> } else if (av_get_frame_filename(oc->filename, >> sizeof(oc->filename), >> >> - c->basename, c->wrap ? c->sequence % >> c->wrap : c->sequence) < 0) { >> >> + c->basename, c->sequence) < 0) { >> >> av_log(oc, AV_LOG_ERROR, "Invalid segment filename template >> '%s' you can try use -use_localtime 1 with it\n", c->basename); >> >> return AVERROR(EINVAL); >> >> } >> >> if( c->vtt_basename) { >> >> if (av_get_frame_filename(vtt_oc->filename, >> sizeof(vtt_oc->filename), >> >> - c->vtt_basename, c->wrap ? c->sequence % >> c->wrap : c->sequence) < 0) { >> >> + c->vtt_basename, c->sequence) < 0) { >> >> av_log(vtt_oc, AV_LOG_ERROR, "Invalid segment filename >> template '%s'\n", c->vtt_basename); >> >> return AVERROR(EINVAL); >> >> } >> >> @@ -911,7 +910,6 @@ static const AVOption options[] = { >> >> {"hls_list_size", "set maximum number of playlist entries", >> OFFSET(max_nb_segments), AV_OPT_TYPE_INT, {.i64 = 5}, 0, >> INT_MAX, >> E}, >> >> {"hls_ts_options","set hls mpegts list of options for the container >> format used for hls", OFFSET(format_options_str), AV_OPT_TYPE_STRING, >> {.str >> = NULL}, 0, 0, E}, >> >> {"hls_vtt_options","set hls vtt list of options for the container >> format used for hls", OFFSET(vtt_format_options_str), AV_OPT_TYPE_STRING, >> {.str = NULL}, 0, 0, E}, >> >> - {"hls_wrap", "set number after which the index wraps", >> OFFSET(wrap), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E}, >> >> {"hls_allow_cache", "explicitly set whether the client MAY (1) or >> MUST >> NOT (0) cache media segments", OFFSET(allowcache), AV_OPT_TYPE_INT, {.i64 >> = >> -1}, INT_MIN, INT_MAX, E}, >> >> {"hls_base_url", "url to prepend to each playlist entry", >> OFFSET(baseurl), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E}, >> >> {"hls_segment_filename", "filename template for segment files", >> OFFSET(segment_filename), AV_OPT_TYPE_STRING, {.str = NULL}, >> 0, 0, E}, >> >> >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> > > bb > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel