summaryrefslogtreecommitdiff
path: root/libavformat/hlsenc.c
diff options
context:
space:
mode:
authorBela Bodecs <bodecsb@vivanet.hu>2017-01-01 11:00:45 +0800
committerBela Bodecs <bodecsb@vivanet.hu>2017-01-01 11:00:45 +0800
commit8fd3e02eee87e0830fa7ab1dbb65160e5be76d20 (patch)
tree2ab7a8a90819bc1682a24c7a6668aff957c177ad /libavformat/hlsenc.c
parent7525517593dff427021c893a1b21333510b7803b (diff)
libavformat/hlsenc: default segment name and use_localtime
in hlcenc.c, in the hls_write_header() function the default format string for strftime() function contains %s specifier when use_localtime is true. This %s specifier will insert the seconds since EPOCH. But %s is not available on all system/environment. This patch check %s availabilty at runtine and alter the default format string if necessary. Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Diffstat (limited to 'libavformat/hlsenc.c')
-rw-r--r--libavformat/hlsenc.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index c9d8e3cee5..57fc9c16dc 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -829,13 +829,23 @@ fail:
return err;
}
+static const char * get_default_pattern_localtime_fmt(void)
+{
+ char b[21];
+ time_t t = time(NULL);
+ struct tm *p, tmbuf;
+ p = localtime_r(&t, &tmbuf);
+ // no %s support when strftime returned error or left format string unchanged
+ return (!strftime(b, sizeof(b), "%s", p) || !strcmp(b, "%s")) ? "-%Y%m%d%H%I%S.ts" : "-%s.ts";
+}
+
static int hls_write_header(AVFormatContext *s)
{
HLSContext *hls = s->priv_data;
int ret, i;
char *p;
const char *pattern = "%d.ts";
- const char *pattern_localtime_fmt = "-%s.ts";
+ const char *pattern_localtime_fmt = get_default_pattern_localtime_fmt();
const char *vtt_pattern = "%d.vtt";
AVDictionary *options = NULL;
int basename_size;