|
|
|
@@ -98,6 +98,7 @@ typedef struct DASHContext { |
|
|
|
const char *media_seg_name; |
|
|
|
AVRational min_frame_rate, max_frame_rate; |
|
|
|
int ambiguous_frame_rate; |
|
|
|
const char *utc_timing_url; |
|
|
|
} DASHContext; |
|
|
|
|
|
|
|
static int dash_write(void *opaque, uint8_t *buf, int buf_size) |
|
|
|
@@ -500,6 +501,9 @@ static int write_manifest(AVFormatContext *s, int final) |
|
|
|
av_free(escaped); |
|
|
|
} |
|
|
|
avio_printf(out, "\t</ProgramInformation>\n"); |
|
|
|
if (c->utc_timing_url) |
|
|
|
avio_printf(out, "\t<UTCTiming schemeIdUri=\"urn:mpeg:dash:utc:http-xsdate:2014\" value=\"%s\"/>\n", c->utc_timing_url); |
|
|
|
|
|
|
|
if (c->window_size && s->nb_streams > 0 && c->streams[0].nb_segments > 0 && !c->use_template) { |
|
|
|
OutputStream *os = &c->streams[0]; |
|
|
|
int start_index = FFMAX(os->nb_segments - c->window_size, 0); |
|
|
|
@@ -1063,6 +1067,7 @@ static const AVOption options[] = { |
|
|
|
{ "single_file_name", "DASH-templated name to be used for baseURL. Implies storing all segments in one file, accessed using byte ranges", OFFSET(single_file_name), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, E }, |
|
|
|
{ "init_seg_name", "DASH-templated name to used for the initialization segment", OFFSET(init_seg_name), AV_OPT_TYPE_STRING, {.str = "init-stream$RepresentationID$.m4s"}, 0, 0, E }, |
|
|
|
{ "media_seg_name", "DASH-templated name to used for the media segments", OFFSET(media_seg_name), AV_OPT_TYPE_STRING, {.str = "chunk-stream$RepresentationID$-$Number%05d$.m4s"}, 0, 0, E }, |
|
|
|
{ "utc_timing_url", "URL of the page that will return the UTC timestamp in ISO format", OFFSET(utc_timing_url), AV_OPT_TYPE_STRING, { 0 }, 0, 0, E }, |
|
|
|
{ NULL }, |
|
|
|
}; |
|
|
|
|
|
|
|
|