On Wed, Feb 03, 2016 at 10:44:28PM +0100, Johan Ström wrote: > Hi, > > this patch adds -use_localtime_mkdir option to the HLS encoder. > Use with -use_localtime, and set -hls_segment_filename to a path > which contains a subdirectory i.e. > /some/path/%Y%m%d/%Y%m%dT%H%M%S-%s.ts > This will mkdir the %Y%m%d-part of the path if it does not already exist. > > In addition, each filename in the playlist output will be prefixed > with this subdirectory (if playlist and segment shares the same base > path). > > Example: > > $ ffmpeg .... -f hls -use_localtime 1 -use_localtime_mkdir 1 > -hls_segment_filename /dvr/test/%Y%m%d/%Y%m%dT%H%M%S-%s.ts > /dvr/test/playlist.m3u8 > > This will create put segments created (today) in > /dvr/test/20160203/, and the 20160203 dir will be automatically > created if it does not already exist. > The m3u8 playlist will contain segment paths like this: > > 20160203/20160203T224121-1454535681.ts > > The subdir support could possibly be enabled outside of the > localtime/mkdir-scope. > > > Regards > Johan >
> hlsenc.c | 46 ++++++++++++++++++++++++++++++++++++++++------ > 1 file changed, 40 insertions(+), 6 deletions(-) > f3bbd115d143c8dd40fef92eb4a84b6c4ef574e7 > 0001-hlsenc-add-use_localtime_mkdir-option-to-automatical.patch > From 40327f78d70b3f1b97b222de5adf70020c466db9 Mon Sep 17 00:00:00 2001 > From: =?UTF-8?q?Johan=20Str=C3=B6m?= <jo...@stromnet.se> > Date: Wed, 3 Feb 2016 22:20:07 +0100 > Subject: [PATCH] hlsenc: add use_localtime_mkdir option to automatically > create time-based directory > > Use with -use_localtime, and set -hls_segment_filename to a path which > contains a subdirectory i.e. /some/path/%Y%m%d/%Y%m%dT%H%M%S-%s.ts > This will mkdir the %Y%m%d-part of the path if it does not already > exist. > In addition, each filename in the playlist output will be prefixed with > this subdirectory (if playlist and segment shares the same base path). > --- > libavformat/hlsenc.c | 46 ++++++++++++++++++++++++++++++++++++++++------ > 1 file changed, 40 insertions(+), 6 deletions(-) missing update to the docs > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > index bc28e3c..073618d 100644 > --- a/libavformat/hlsenc.c > +++ b/libavformat/hlsenc.c > @@ -82,6 +82,7 @@ typedef struct HLSContext { > char *segment_filename; > > int use_localtime; ///< flag to expand filename with localtime > + int use_localtime_mkdir;///< flag to mkdir dirname in timebased filename > int allowcache; > int64_t recording_time; > int has_video; > @@ -303,16 +304,33 @@ static int hls_mux_init(AVFormatContext *s) > } > > /* Create a new segment and append it to the segment list */ > -static int hls_append_segment(HLSContext *hls, double duration, int64_t pos, > - int64_t size) > +static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, > double duration, > + int64_t pos, int64_t size) > { > HLSSegment *en = av_malloc(sizeof(*en)); > + char *tmp, *p; > + const char *pl_dir, *filename; > int ret; > > if (!en) > return AVERROR(ENOMEM); > > - av_strlcpy(en->filename, av_basename(hls->avf->filename), > sizeof(en->filename)); > + filename = av_basename(hls->avf->filename); > + > + if (hls->use_localtime_mkdir) { > + /* Possibly prefix with mkdir'ed subdir, if playlist share same > + * base path. */ > + tmp = av_strdup(s->filename); > + if (!tmp) > + return AVERROR(ENOMEM); en leaks here also can you add a fate test for this feature ? [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Asymptotically faster algorithms should always be preferred if you have asymptotical amounts of data
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel