From patchwork Tue Sep 19 10:15:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Steven X-Patchwork-Id: 5191 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp4468656jaa; Tue, 19 Sep 2017 03:17:29 -0700 (PDT) X-Google-Smtp-Source: AOwi7QDnyef0SrBh0EHhch3tGk9iD5z0PZtatd/AuLos0lykuWIStefChho2jg3mYaMBURIrH4tb X-Received: by 10.28.25.129 with SMTP id 123mr602919wmz.17.1505816249624; Tue, 19 Sep 2017 03:17:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1505816249; cv=none; d=google.com; s=arc-20160816; b=BKlEYDPJDTpFeFgBWCtavybApcOIj6SdyHbTKxBBHJb4+TAQb4dyAN9Aq0ALw8rZbw q0Y0o/2uIAAaTy1ultUX3UCksW3vzpEHywyCCwgYNZsYiJVQ96+l7BM4+gAaTu7epbeW mS9+qQsERQENAozQsX3H+92bQzpwUrsn38o5AMSV/UFwnL95Efc8GcYhpKlImx2RD/5z 4jI5P2boF+RZa7Iu8T/wa8cEjwcjVYcum7DyC2NeYAb/C675Qk7VYk8OvGSfXBB0OgPj BwMYQ8iQ6UYuJUG8ONvqMJSEXz3It5C1HaQVViFQ9H4/n1Icg1ZdsTIZVOWWU2qGLEct P6DQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:feedback-id:message-id:date:to:from :delivered-to:arc-authentication-results; bh=vtLHNmjJEZ3NbRrmMUKQfCIDo+oZ90K6T+mZ0ZeUFH0=; b=Op2kgZO9A/Qek9oN6NnGB+1nmWk4V/ABWYpOLWLn5zXqglBM2RinImztmGgt91YxEb nfxtCOecaWM6Q1Zrv7a0eaElVKX4BM6Fn2gniaecPibzuBZmr7aPd0v9V8H21amjHPdU SUrGV8Pc8tiguM4URwDtzCYWYSDnJ/77A5rOWX5eYYkyCBKwOguvIYOLaoKXo7HG1UKj qSzRr7PK7e2sWgBRo93oCie4Q4JmmbzqXWZlblAhntsqU3hXEXlhKSGfWc+rqPyaS41k 8Seca1fY9m04yr/ytW3CtRKt4O6bqj97Z2l9v/9qW6bJqesdjwzoWIWGFUV6M6DcXwiu /tAg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i26si1103423wmc.135.2017.09.19.03.17.29; Tue, 19 Sep 2017 03:17:29 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3724768830F; Tue, 19 Sep 2017 13:17:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtpbg320.qq.com (SMTPBG19.QQ.COM [183.60.61.236]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 92A7D680624 for ; Tue, 19 Sep 2017 13:17:12 +0300 (EEST) X-QQ-mid: bizesmtp1t1505816131tod0lfs8c Received: from localhost (unknown [47.90.47.25]) by esmtp4.qq.com (ESMTP) with id ; Tue, 19 Sep 2017 18:15:30 +0800 (CST) X-QQ-SSF: 01100000002000F0FH60000A0000000 X-QQ-FEAT: 6dXuswn9i1XqhG7azlLE8txx+OfUshF8HV2enSNF/X0l4OluMSgZNGmAxGEf/ GAU+osf3USYJplaJ47Ph9svbVaCkfsxMnl2o0uuwsJkVwrIP7BOT24HLTVG2AUzseB5DKP8 TRZ/WOZXUkhNUV1QhzIQw81W6oVQQA5P936Fx7dzvVk60xBbqWppUYo3A65qsKG+sapnlyK 3XbP3RwO984puMUkcZNlmeMM55UzNmhlwxwhOVJw+YxTfwr7c+fIN7i8lYguroM9yg5Pa7M A7zd8pHbKCHvHfif4Fq/LDGu0= X-QQ-GoodBg: 0 From: Steven Liu To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 Sep 2017 18:15:24 +0800 Message-Id: <20170919101524.3141-1-lq@chinaffmpeg.org> X-Mailer: git-send-email 2.10.1.382.ga23ca1b.dirty X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:chinaffmpeg.org:qybgforeign:qybgforeign1 X-QQ-Bgrelay: 1 Subject: [FFmpeg-devel] [PATCH] avformat/hlsenc: support http method for hls fmp4 init file X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Steven Liu , Steven Liu MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" fix ticket id: 6673 Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 3a9a235514..56f3cd505a 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -215,6 +215,22 @@ static int mkdir_p(const char *path) { return ret; } +static void set_http_options(AVFormatContext *s, AVDictionary **options, HLSContext *c) +{ + const char *proto = avio_find_protocol_name(s->filename); + int http_base_proto = proto ? (!av_strcasecmp(proto, "http") || !av_strcasecmp(proto, "https")) : 0; + + if (c->method) { + av_dict_set(options, "method", c->method, 0); + } else if (http_base_proto) { + 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 int replace_int_data_in_filename(char *buf, int buf_size, const char *filename, char placeholder, int64_t number) { const char *p; @@ -592,7 +608,8 @@ static int hls_mux_init(AVFormatContext *s) return AVERROR_PATCHWELCOME; } hls->fmp4_init_mode = !byterange_mode; - if ((ret = s->io_open(s, &oc->pb, hls->base_output_dirname, AVIO_FLAG_WRITE, NULL)) < 0) { + set_http_options(s, &options, hls); + if ((ret = s->io_open(s, &oc->pb, hls->base_output_dirname, AVIO_FLAG_WRITE, &options)) < 0) { av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", hls->fmp4_init_filename); return ret; } @@ -964,22 +981,6 @@ static void hls_free_segments(HLSSegment *p) } } -static void set_http_options(AVFormatContext *s, AVDictionary **options, HLSContext *c) -{ - const char *proto = avio_find_protocol_name(s->filename); - int http_base_proto = proto ? (!av_strcasecmp(proto, "http") || !av_strcasecmp(proto, "https")) : 0; - - if (c->method) { - av_dict_set(options, "method", c->method, 0); - } else if (http_base_proto) { - 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, int target_duration, int64_t sequence) {