avformat/dashenc: configuring container format options
This commit is contained in:
parent
9a09f4c54a
commit
e3518821c9
@ -284,6 +284,10 @@ corrects that index value.
|
|||||||
Typically this logic is needed in live streaming use cases. The network bandwidth
|
Typically this logic is needed in live streaming use cases. The network bandwidth
|
||||||
fluctuations are common during long run streaming. Each fluctuation can cause
|
fluctuations are common during long run streaming. Each fluctuation can cause
|
||||||
the segment indexes fall behind the expected real time position.
|
the segment indexes fall behind the expected real time position.
|
||||||
|
@item -format_options @var{options_list}
|
||||||
|
Set container format (mp4/webm) options using a @code{:} separated list of
|
||||||
|
key=value parameters. Values containing @code{:} special characters must be
|
||||||
|
escaped.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@anchor{framecrc}
|
@anchor{framecrc}
|
||||||
|
@ -125,6 +125,7 @@ typedef struct DASHContext {
|
|||||||
int streaming;
|
int streaming;
|
||||||
int64_t timeout;
|
int64_t timeout;
|
||||||
int index_correction;
|
int index_correction;
|
||||||
|
char *format_options_str;
|
||||||
} DASHContext;
|
} DASHContext;
|
||||||
|
|
||||||
static struct codec_string {
|
static struct codec_string {
|
||||||
@ -1017,6 +1018,11 @@ static int dash_init(AVFormatContext *s)
|
|||||||
av_dict_free(&opts);
|
av_dict_free(&opts);
|
||||||
os->init_start_pos = 0;
|
os->init_start_pos = 0;
|
||||||
|
|
||||||
|
if (c->format_options_str) {
|
||||||
|
ret = av_dict_parse_string(&opts, c->format_options_str, "=", ":", 0);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
if (!strcmp(os->format_name, "mp4")) {
|
if (!strcmp(os->format_name, "mp4")) {
|
||||||
if (c->streaming)
|
if (c->streaming)
|
||||||
av_dict_set(&opts, "movflags", "frag_every_frame+dash+delay_moov", 0);
|
av_dict_set(&opts, "movflags", "frag_every_frame+dash+delay_moov", 0);
|
||||||
@ -1538,6 +1544,7 @@ static const AVOption options[] = {
|
|||||||
{ "streaming", "Enable/Disable streaming mode of output. Each frame will be moof fragment", OFFSET(streaming), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
|
{ "streaming", "Enable/Disable streaming mode of output. Each frame will be moof fragment", OFFSET(streaming), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
|
||||||
{ "timeout", "set timeout for socket I/O operations", OFFSET(timeout), AV_OPT_TYPE_DURATION, { .i64 = -1 }, -1, INT_MAX, .flags = E },
|
{ "timeout", "set timeout for socket I/O operations", OFFSET(timeout), AV_OPT_TYPE_DURATION, { .i64 = -1 }, -1, INT_MAX, .flags = E },
|
||||||
{ "index_correction", "Enable/Disable segment index correction logic", OFFSET(index_correction), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
|
{ "index_correction", "Enable/Disable segment index correction logic", OFFSET(index_correction), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
|
||||||
|
{ "format_options","set list of options for the container format (mp4/webm) used for dash", OFFSET(format_options_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E},
|
||||||
{ NULL },
|
{ NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user