Signed-off-by: Steven Liu <l...@chinaffmpeg.org> --- libavformat/hlsenc.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-)
diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 5695c6cc95..a1eddade7b 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -2266,6 +2266,26 @@ static int hls_write_header(AVFormatContext *s) } } } + if (hls->segment_type == SEGMENT_TYPE_FMP4 && !vs->init_range_length) { + int range_length = 0; + int byterange_mode = (hls->flags & HLS_SINGLE_FILE) || (hls->max_seg_size > 0); + av_write_frame(vs->avf, NULL); /* Flush any buffered data */ + avio_tell(vs->avf->pb); + avio_flush(vs->avf->pb); + range_length = avio_close_dyn_buf(vs->avf->pb, &vs->init_buffer); + if (range_length <= 0) + return AVERROR(EINVAL); + avio_write(vs->out, vs->init_buffer, range_length); + if (!hls->resend_init_file) + av_freep(&vs->init_buffer); + vs->init_range_length = range_length; + avio_open_dyn_buf(&vs->avf->pb); + vs->packets_written = 0; + vs->start_pos = range_length; + if (!byterange_mode) { + hlsenc_io_close(s, &vs->out, vs->base_output_dirname); + } + } } return ret; @@ -2383,23 +2403,6 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) new_start_pos = avio_tell(oc->pb); vs->size = new_start_pos - vs->start_pos; avio_flush(oc->pb); - if (hls->segment_type == SEGMENT_TYPE_FMP4) { - if (!vs->init_range_length) { - range_length = avio_close_dyn_buf(oc->pb, &vs->init_buffer); - if (range_length <= 0) - return AVERROR(EINVAL); - avio_write(vs->out, vs->init_buffer, range_length); - if (!hls->resend_init_file) - av_freep(&vs->init_buffer); - vs->init_range_length = range_length; - avio_open_dyn_buf(&oc->pb); - vs->packets_written = 0; - vs->start_pos = range_length; - if (!byterange_mode) { - hlsenc_io_close(s, &vs->out, vs->base_output_dirname); - } - } - } if (!byterange_mode) { if (vs->vtt_avf) { hlsenc_io_close(s, &vs->vtt_avf->pb, vs->vtt_avf->url); -- 2.25.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".