> On Sep 27, 2018, at 06:10, Michael Niedermayer <mich...@niedermayer.cc> wrote: > > On Wed, Sep 26, 2018 at 10:07:58AM +0100, James Courtier-Dutton wrote: >> On 26 September 2018 at 00:18, Steven Liu <l...@chinaffmpeg.org> wrote: >> >>> >>> >>>> On Sep 26, 2018, at 06:49, James Courtier-Dutton <james.dut...@gmail.com> >>> wrote: >>>> On 25 September 2018 at 23:24, Steven Liu <l...@chinaffmpeg.org> wrote: >>> yes, the error message is confusing, maybe change it here is better. >>>> >>>> + av_log(oc, AV_LOG_ERROR, "Could not create directory %s\n", >>> dir); >>>> >>> >>> >> Attached patch has the changed error message. > >> segment.c | 15 +++++++++++++++ >> 1 file changed, 15 insertions(+) >> a026d4ed5e2ba0505f93a3eece153a567707b812 >> 0001-avformat-segment-strftime-date-sub-directories.patch >> From 8d8ea7d1f87a77ee23b6681a714da378b5361e4d Mon Sep 17 00:00:00 2001 >> From: James Courtier-Dutton <james.dut...@gmail.com> >> Date: Wed, 26 Sep 2018 10:05:13 +0100 >> Subject: [PATCH] avformat/segment: strftime date sub-directories >> >> Automatically create sub-directories if needed based on date. >> E.g. >> ffmpeg ... -timelimit 2147483647 -f segment -strftime 1 -segment_time 10 >> "%Y/%m/%d/%Y-%m-%d_%H-%M-%S.mkv" >> >> Signed-off-by: James Courtier-Dutton <james.dut...@gmail.com> >> --- >> libavformat/segment.c | 15 +++++++++++++++ >> 1 file changed, 15 insertions(+) >> >> diff --git a/libavformat/segment.c b/libavformat/segment.c >> index 7fb4dc7..0e17380 100644 >> --- a/libavformat/segment.c >> +++ b/libavformat/segment.c >> @@ -200,12 +200,27 @@ static int set_segment_filename(AVFormatContext *s) >> if (seg->use_strftime) { >> time_t now0; >> struct tm *tm, tmpbuf; >> + const char *dir; >> + char *fn_copy; >> time(&now0); >> tm = localtime_r(&now0, &tmpbuf); >> if (!strftime(buf, sizeof(buf), s->url, tm)) { >> av_log(oc, AV_LOG_ERROR, "Could not get segment filename with >> strftime\n"); >> return AVERROR(EINVAL); >> } >> + /* Automatically create directories if needed */ >> + /* E.g. %Y/%m/%d/%Y-%m-%d_%H-%M-%S.mkv */ >> + fn_copy = av_strdup(buf); >> + if (!fn_copy) { >> + return AVERROR(ENOMEM); >> + } >> + dir = av_dirname(fn_copy); >> + if (ff_mkdir_p(dir) == -1 && errno != EEXIST) { >> + av_log(oc, AV_LOG_ERROR, "Could not create directory %s\n", >> dir); >> + av_free(fn_copy); >> + return AVERROR(errno); >> + } >> + av_free(fn_copy); > > How does this interact with urls that are not the file protocol ? > > I see that this starts out with s->url and then seems to simply treat it as > if it was a local file. Its quite possible iam missing something but url != > filename There will have no error message, and cannot create directory on the HTTP server. And the same problem is in hlsenc, I think this is a good question, let me think about how to fix it. > > [...] > > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > Modern terrorism, a quick summary: Need oil, start war with country that > has oil, kill hundread thousand in war. Let country fall into chaos, > be surprised about raise of fundamantalists. Drop more bombs, kill more > people, be surprised about them taking revenge and drop even more bombs > and strip your own citizens of their rights and freedoms. to be continued > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Thanks Steven _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel