From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 8ABC449993 for ; Wed, 25 Feb 2026 22:38:30 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'pD1kdIV0dxwG29lDlI9RZK/rH68WFLdaq0Nfe3MjXcA=', expected b'dknYlFQFrqSw8cTWYoSFdFnXuXGGqriHrCmjrzg9BLU=')) header.d=emresimsirli.com header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1772059094; h=to : date : message-id : in-reply-to : references : mime-version : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=hub+TrI7AQGbKAZzpgVr3ZR1fYmAZG8HyQ4atSFsjuY=; b=m6/EC/mbnC5ejTRjWoWY7PlbkbjCDA5r5FlvosdHQZMAGQyTMkrRQypRkWS/+b2NuL3RF 9inj62+QigR6M1FvBWvzyDkEvaVc7OMlNP3djcgBRB1NORje9E+jk4r3x3hagJLsEeJxj8b 69X+heUb8kw1YmJYCyoJL7G282mbXGTRjWyXeR3IlA7d5r6C8Fcb2yWq4HHq35Hj6sFeLmd /R2TaiPVQDvMGAY5E0z4DIkm3/UHw7iW9A1iFhz8pj3Bm0GyyPZntzaQusdJMfIFrNz6H18 oqg1AKTKCLEM5ABpvMBfgECjT07FF10yFexYoESHUfszZmViMN6zXO415H1Q== Received: from [172.18.0.3] (unknown [172.18.0.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 6F4EB691DFF; Thu, 26 Feb 2026 00:38:14 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1772059079; b=hhvxze7CDf15HRHeG6Voi3wg0huzbjjGnkAhBLMQE0UvDKqk75Oca40ghf1zwtetc8eXB NtlrXhNOxlR7aqrmNT+gymNknvvOpk5TIXHYixDWVQudotd2Q8Gh82jF4CfrTfVV5okRg/C 9/QZQRHy7uI/f37UvtbGPBC/whGrRJw/cJVO9ev4j8NYLeS1JwJIqIn1tG1glyFC3GHAPvF pMhf5tbhVlXCeULJMi56ht0ZCxWZ3ptlUtytlCff3NiO07t3y5lqJNN5X0L1i7xgpKPPFmw klozwAFQnupyYnZzG1QvxgBBDs3zaabXrAOs9XEsDpbnxvv26/9CGT+pQtCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1772059079; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=pD1kdIV0dxwG29lDlI9RZK/rH68WFLdaq0Nfe3MjXcA=; b=YIkwxIvsE3xnERZZTgxZKIk40YT/zKtqbiynUgUMJ4sTrDwHFrvbzeQ32OBX9S40CUgx8 4VYyfxgzcxK7iTpjJ6MxR4ikFC+LtMdTXxT5zvP3aoh81LLXF7MZRxZ4pKzzLWEXSB41+no QPy0JXuOxVrBw5h7FsgG/l7kRnCexX4JPK3zKVsR7zzdmb2+1CkMSptIn3rPu8yvA/KweUS MRtasJxUOik9lkiJwsjXPLdlMs+0Ks5igo3tFulEeyuaXUrfPT5Q+QMPtDE6a9mGS56U2RB 042rDJj1OYL2HgyHVS5PslxlM+pA1Atd41S5EJS+GZ9SH79GNOIi5JHKxCAw== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=emresimsirli.com; arc=none; dmarc=pass header.from=emresimsirli.com policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=emresimsirli.com; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=emresimsirli.com policy.dmarc=quarantine Received: from out-182.mta1.migadu.com (out-182.mta1.migadu.com [95.215.58.182]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 29292691DD1 for ; Thu, 26 Feb 2026 00:37:45 +0200 (EET) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emresimsirli.com; s=key1; t=1772059064; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dknYlFQFrqSw8cTWYoSFdFnXuXGGqriHrCmjrzg9BLU=; b=XhjSmiskqDw3L7g13OPNXeCeVVl/0CBfi5m7Mp1gp0waL+IAzQttMxx8bphR4EB2t109Ji ke6TVVkHTU4AyYEzazX+QYuhcnCSBKp2A/5G7I1OklwH5AHlquXdgq5q+q7cbCmG7IVg6d 9soahFbUQRK9vKEvQPPYpGC8wREWikGDvgOW39ASTF4JIRXdmNR3j9DjvlHQUxUOCjyG9z rUgF+8EECxxrb29LSNTxp18xb3Ye11+xT0oQ1+1i+TyhXugVJZWE66iuoYw1UmtKJYpwEI WDNAKJu4XqliHOry5qB5A9CkDkzF7/BiFsi5Az3ZWLZhqBmx4tDKUdtY32RfaQ== To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Feb 2026 23:35:52 +0100 Message-ID: <20260225223726.107069-1-mail@emresimsirli.com> In-Reply-To: <9e02b1d1-16e5-483c-a7a5-99a2385bc0c6@emresimsirli.com> References: <9e02b1d1-16e5-483c-a7a5-99a2385bc0c6@emresimsirli.com> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT Message-ID-Hash: R4Z25HMM2P2WWQY3DYHKQSV2XBTLK7DL X-Message-ID-Hash: R4Z25HMM2P2WWQY3DYHKQSV2XBTLK7DL X-MailFrom: SRS0=ioPZ=A5=emresimsirli.com=mail@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH v2 1/2] avformat: Add strftime_mkdir command line parameter to segment muxer List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Emre Simsirli via ffmpeg-devel Cc: Emre Simsirli Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: Adds strftime_mkdir parameter so that the parent directories defined in the segment name are correctly created. This makes the strftime functionality in 'segment' consistent with 'hls'. Signed-off-by: Emre Simsirli --- libavformat/segment.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libavformat/segment.c b/libavformat/segment.c index 2c7ba0e776..d84115ef3a 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -97,6 +97,7 @@ typedef struct SegmentContext { int64_t time; ///< segment duration int64_t min_seg_duration; ///< minimum segment duration int use_strftime; ///< flag to expand filename with strftime + int use_strftime_mkdir; ///< flag to create parent directories with strftime_mkdir int increment_tc; ///< flag to increment timecode if found char *times_str; ///< segment times specification string @@ -208,6 +209,20 @@ static int set_segment_filename(AVFormatContext *s) av_bprint_finalize(&filename, NULL); return AVERROR(ENOMEM); } + + if (seg->use_strftime_mkdir) { + const char* dir; + char* fn_copy = av_strdup(filename.str); + if (!fn_copy) + return AVERROR(ENOMEM); + dir = av_dirname(fn_copy); + if (ff_mkdir_p(dir) == -1 && errno != EEXIST) { + av_log(s, AV_LOG_ERROR, "Could not create directory %s with use_strftime_mkdir\n", dir); + av_freep(&fn_copy); + return AVERROR(errno); + } + av_freep(&fn_copy); + } } else { ret = ff_bprint_get_frame_filename(&filename, s->url, seg->segment_idx, 0); if (ret < 0) { @@ -1077,6 +1092,7 @@ static const AVOption options[] = { { "segment_start_number", "set the sequence number of the first segment", OFFSET(segment_idx), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E }, { "segment_wrap_number", "set the number of wrap before the first segment", OFFSET(segment_idx_wrap_nb), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E }, { "strftime", "set filename expansion with strftime at segment creation", OFFSET(use_strftime), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, E }, + { "strftime_mkdir", "create last directory component in strftime-generated filename", OFFSET(use_strftime_mkdir), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E }, { "increment_tc", "increment timecode between each segment", OFFSET(increment_tc), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, E }, { "break_non_keyframes", "allow breaking segments on non-keyframes", OFFSET(break_non_keyframes), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, E }, -- 2.53.0 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org