Tested-by: Zuo Genyu <1515161...@qq.com> (Windows)
2016-09-28 16:13 GMT+08:00 Steven Liu <lingjiujia...@gmail.com>: > > > 2016-09-27 21:56 GMT+08:00 Steven Liu <lingjiujia...@gmail.com>: > >> >> >> 2016-09-27 6:50 GMT+08:00 Michael Niedermayer <mich...@niedermayer.cc>: >> >>> On Mon, Sep 26, 2016 at 04:04:32PM +0800, Steven Liu wrote: >>> > >>> >>> > hlsenc.c | 31 ++++++++++++++++++++++++++++++- >>> > 1 file changed, 30 insertions(+), 1 deletion(-) >>> > 8647c63d575b475e6e19b6427061787e39081bc4 >>> 0001-avformat-hlsenc-support-mkdir_p-for-use_localtime_mk.patch >>> > From 4897d06fc1c9c4d9d302942b6e3ac8a8e25aa793 Mon Sep 17 00:00:00 2001 >>> > From: Steven Liu <lingjiujia...@gmail.com> >>> > Date: Mon, 26 Sep 2016 13:50:31 +0800 >>> > Subject: [PATCH 1/3] avformat/hlsenc: support mkdir_p for >>> use_localtime_mkdir >>> > >>> > when use use_localtime_mkdir to create multi level dir, >>> > ffmpeg give error message: >>> > ffmpeg -i ~/Movies/objectC/facebook.mp4 -c copy -use_localtime 1 >>> > -use_localtime_mkdir 1 -hls_segment_filename '%Y%m%d/file-%Y%m%d/%s.ts' >>> > out.m3u8 >>> > error message: >>> > Could not create directory 20160926/file-20160926 with >>> use_localtime_mkdir >>> > add mkdir_p for support the multi level dir >>> > >>> > Signed-off-by: Steven Liu <lingjiujia...@gmail.com> >>> > --- >>> > libavformat/hlsenc.c | 31 ++++++++++++++++++++++++++++++- >>> > 1 file changed, 30 insertions(+), 1 deletion(-) >>> > >>> > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c >>> > index 428bae4..ac79759 100644 >>> > --- a/libavformat/hlsenc.c >>> > +++ b/libavformat/hlsenc.c >>> > @@ -133,6 +133,35 @@ typedef struct HLSContext { >>> > double initial_prog_date_time; >>> > } HLSContext; >>> > >>> > +static int mkdir_p(const char *path) { >>> >>> > + char *temp = strdup(path); >>> >>> mixing malloc() based functions and av_malloc() is not safe >>> av_strdup() >>> >>> >>> >>> > + char *pos = temp; >>> > + >>> > + if (!path) { >>> > + return -1; >>> > + } >>> > + >>> > + if (!strncmp(temp, "/", 1)) { >>> >>> missing allocation failure check >>> >>> >>> >>> > + pos++; >>> > + } else if (!strncmp(temp, "./", 2)) { >>> > + pos += 2; >>> > + } >>> > + for ( ; *pos != '\0'; ++pos) { >>> > + if (*pos == '/') { >>> > + *pos = '\0'; >>> > + mkdir(temp, 0755); >>> > + *pos = '/'; >>> > + } >>> > + } >>> > + >>> > + if (*(pos - 1) != '/') { >>> >>> all the '/' stuff looks non portable (windows) >>> >>> Hi Michael, >> Do you have any suggestion for portable (windows) with the >> '/'(Linux/OSX/Unix) and '\'(Windows) ? >> >>> >>> [...] >>> >>> >>> -- >>> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB >>> >>> Old school: Use the lowest level language in which you can solve the >>> problem >>> conveniently. >>> New school: Use the highest level language in which the latest >>> supercomputer >>> can solve the problem without the user falling asleep >>> waiting. >>> >>> _______________________________________________ >>> ffmpeg-devel mailing list >>> ffmpeg-devel@ffmpeg.org >>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> >>> patch update >> > > and test passed on Windows > > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel