2017-01-19 9:35 GMT+08:00 殷焦元 <yinjiaoy...@163.com>: > I test this patch, I found it show below log info and ffmpeg term auto. > > av_interleaved_write_frame(): Too many open files > No more output streams to write to, finishing. > > I think it is not OK. > Yin Jiaoyuan >
ok , i wll make a new patch to file the too many open files > > > > > At 2017-01-19 07:08:08, "Steven Liu" <lingjiujia...@gmail.com> wrote: > >2017-01-17 14:28 GMT+08:00 Steven Liu <l...@chinaffmpeg.org>: > > > >> when push hls to http server, the old segemnts can not delete by hls > >> formats. > >> so add the http option into hls_delete_old_segments > >> > >> Reported-by: Yin Jiaoyuan <yinjiaoy...@163.com> > >> Signed-off-by: Steven Liu <l...@chinaffmpeg.org> > >> --- > >> libavformat/hlsenc.c | 17 +++++++++++++++-- > >> 1 file changed, 15 insertions(+), 2 deletions(-) > >> > >> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > >> index f02b887..87f7717 100644 > >> --- a/libavformat/hlsenc.c > >> +++ b/libavformat/hlsenc.c > >> @@ -245,6 +245,8 @@ static int hls_delete_old_segments(HLSContext > *hls) { > >> int ret = 0, path_size, sub_path_size; > >> char *dirname = NULL, *p, *sub_path; > >> char *path = NULL; > >> + AVDictionary *options = NULL; > >> + AVIOContext *out = NULL; > >> > >> segment = hls->segments; > >> while (segment) { > >> @@ -294,7 +296,11 @@ static int hls_delete_old_segments(HLSContext > *hls) { > >> av_strlcat(path, segment->filename, path_size); > >> } > >> > >> - if (unlink(path) < 0) { > >> + if (hls->method) { > >> + av_dict_set(&options, "method", "DELETE", 0); > >> + if ((ret = hls->avf->io_open(hls->avf, &out, path, > >> AVIO_FLAG_WRITE, &options)) < 0) > >> + goto fail; > >> + } else if (unlink(path) < 0) { > >> av_log(hls, AV_LOG_ERROR, "failed to delete old segment %s: > >> %s\n", > >> path, strerror(errno)); > >> } > >> @@ -309,7 +315,14 @@ static int hls_delete_old_segments(HLSContext > *hls) { > >> > >> av_strlcpy(sub_path, dirname, sub_path_size); > >> av_strlcat(sub_path, segment->sub_filename, sub_path_size); > >> - if (unlink(sub_path) < 0) { > >> + > >> + if (hls->method) { > >> + av_dict_set(&options, "method", "DELETE", 0); > >> + if ((ret = hls->avf->io_open(hls->avf, &out, sub_path, > >> AVIO_FLAG_WRITE, &options)) < 0) { > >> + av_free(sub_path); > >> + goto fail; > >> + } > >> + } else if (unlink(sub_path) < 0) { > >> av_log(hls, AV_LOG_ERROR, "failed to delete old segment > >> %s: %s\n", > >> sub_path, strerror(errno)); > >> } > >> -- > >> 2.10.1.382.ga23ca1b.dirty > >> > >> > >> > >> _______________________________________________ > >> ffmpeg-devel mailing list > >> ffmpeg-devel@ffmpeg.org > >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > > >applied! > > > > > >Thanks > >_______________________________________________ > >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 > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel