mirror of https://git.ffmpeg.org/ffmpeg.git
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>
This commit is contained in:
parent
7525517593
commit
8fd3e02eee
|
@ -829,13 +829,23 @@ fail:
|
||||||
return err;
|
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)
|
static int hls_write_header(AVFormatContext *s)
|
||||||
{
|
{
|
||||||
HLSContext *hls = s->priv_data;
|
HLSContext *hls = s->priv_data;
|
||||||
int ret, i;
|
int ret, i;
|
||||||
char *p;
|
char *p;
|
||||||
const char *pattern = "%d.ts";
|
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";
|
const char *vtt_pattern = "%d.vtt";
|
||||||
AVDictionary *options = NULL;
|
AVDictionary *options = NULL;
|
||||||
int basename_size;
|
int basename_size;
|
||||||
|
|
Loading…
Reference in New Issue