Commit 76b8e42c authored by Charles Liu's avatar Charles Liu Committed by Steven Liu

avformat/hlsenc.c: the size of init.mp4 is zero.

The size of init.mp4 is zero in fmp4 mode,
when the input duraton smaller than the expected segment time.

fix ticket: 7166
Signed-off-by: 's avatarCharles Liu <liuchh83@gmail.com>
Signed-off-by: 's avatarSteven Liu <lq@chinaffmpeg.org>
parent 2365f47b
......@@ -2348,6 +2348,25 @@ static int hls_write_trailer(struct AVFormatContext *s)
return AVERROR(ENOMEM);
}
if ( hls->segment_type == SEGMENT_TYPE_FMP4) {
if (!vs->init_range_length) {
av_write_frame(vs->avf, NULL); /* Flush any buffered data */
avio_flush(oc->pb);
uint8_t *buffer = NULL;
int range_length = avio_close_dyn_buf(oc->pb, &buffer);
avio_write(vs->out, buffer, range_length);
av_free(buffer);
vs->init_range_length = range_length;
avio_open_dyn_buf(&oc->pb);
vs->packets_written = 0;
vs->start_pos = range_length;
int byterange_mode = (hls->flags & HLS_SINGLE_FILE) || (hls->max_seg_size > 0);
if (!byterange_mode) {
ff_format_io_close(s, &vs->out);
hlsenc_io_close(s, &vs->out, vs->base_output_dirname);
}
}
int range_length = 0;
if (!(hls->flags & HLS_SINGLE_FILE)) {
ret = hlsenc_io_open(s, &vs->out, vs->avf->url, NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment