diff mbox

[FFmpeg-devel] avformat/hlsenc: support http method for hls fmp4 init file

Message ID 20170919101524.3141-1-lq@chinaffmpeg.org
State Accepted
Commit c34c0e3a649eb4fe8e6fb756b7784b7bfd9bd638
Headers show

Commit Message

Liu Steven Sept. 19, 2017, 10:15 a.m. UTC
fix ticket id: 6673

Signed-off-by: Steven Liu <lq@onvideo.cn>
---
 libavformat/hlsenc.c | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

Comments

Carl Eugen Hoyos Sept. 19, 2017, 9:42 p.m. UTC | #1
2017-09-19 12:15 GMT+02:00 Steven Liu <lq@chinaffmpeg.org>:
> fix ticket id: 6673

Please split if/when you push.

Thank you, Carl Eugen
Steven Liu Sept. 21, 2017, 3:13 p.m. UTC | #2
2017-09-20 5:42 GMT+08:00 Carl Eugen Hoyos <ceffmpeg@gmail.com>:
> 2017-09-19 12:15 GMT+02:00 Steven Liu <lq@chinaffmpeg.org>:
>> fix ticket id: 6673
>
> Please split if/when you push.
>
> Thank you, Carl Eugen
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


split the comment and pushed


Thanks
diff mbox

Patch

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)
 {