diff --git a/doc/muxers.texi b/doc/muxers.texi index 2bec5f8954310977ac7fe6b8ad9326d8b277626b..5a4f17bf8d51a9becf1d4ec417a31b4b9eee7ca0 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -728,6 +728,10 @@ server using the HTTP PUT method, and update the m3u8 files every @code{refresh} times using the same method. Note that the HTTP server must support the given method for uploading files. + +@item http_user_agent +Override User-Agent field in HTTP header. Applicable only for HTTP output. + @end table @anchor{ico} diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 4a90886331bebb8f2432dd208e2e7a98ebee166e..895aa41bc367ac3d7794556f1a9494254120eb06 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -174,6 +174,7 @@ typedef struct HLSContext { double initial_prog_date_time; char current_segment_final_filename_fmt[1024]; // when renaming segments + char *user_agent; } HLSContext; static int get_int_from_double(double val) @@ -974,6 +975,9 @@ static void set_http_options(AVFormatContext *s, AVDictionary **options, HLSCont av_log(c, AV_LOG_WARNING, "No HTTP method set, hls muxer defaulting to method PUT.\n"); av_dict_set(options, "method", "PUT", 0); } + if (c->user_agent) + av_dict_set(options, "user_agent", c->user_agent, 0); + } static void write_m3u8_head_block(HLSContext *hls, AVIOContext *out, int version, @@ -1816,6 +1820,7 @@ static const AVOption options[] = { {"generic", "start_number value (default)", 0, AV_OPT_TYPE_CONST, {.i64 = HLS_START_SEQUENCE_AS_START_NUMBER }, INT_MIN, INT_MAX, E, "start_sequence_source_type" }, {"epoch", "seconds since epoch", 0, AV_OPT_TYPE_CONST, {.i64 = HLS_START_SEQUENCE_AS_SECONDS_SINCE_EPOCH }, INT_MIN, INT_MAX, E, "start_sequence_source_type" }, {"datetime", "current datetime as YYYYMMDDhhmmss", 0, AV_OPT_TYPE_CONST, {.i64 = HLS_START_SEQUENCE_AS_FORMATTED_DATETIME }, INT_MIN, INT_MAX, E, "start_sequence_source_type" }, + {"http_user_agent", "override User-Agent field in HTTP header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E}, { NULL }, };