mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-11 17:55:21 +00:00
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: Charles Liu <liuchh83@gmail.com> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
This commit is contained in:
parent
2365f47bf5
commit
76b8e42c1f
@ -2348,6 +2348,25 @@ static int hls_write_trailer(struct AVFormatContext *s)
|
|||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
}
|
}
|
||||||
if ( hls->segment_type == SEGMENT_TYPE_FMP4) {
|
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;
|
int range_length = 0;
|
||||||
if (!(hls->flags & HLS_SINGLE_FILE)) {
|
if (!(hls->flags & HLS_SINGLE_FILE)) {
|
||||||
ret = hlsenc_io_open(s, &vs->out, vs->avf->url, NULL);
|
ret = hlsenc_io_open(s, &vs->out, vs->avf->url, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user