mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/hlsenc: check fragment size plus start_pos large than hls_segment_size
if vs->size + vs->start_pos > hls->max_seg_size, should split segment. Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
This commit is contained in:
parent
855d51bf48
commit
73fe0cbb94
|
@ -2390,7 +2390,7 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||
&& (hls->flags & HLS_TEMP_FILE);
|
||||
}
|
||||
|
||||
if ((hls->max_seg_size > 0 && (vs->size >= hls->max_seg_size)) || !byterange_mode) {
|
||||
if ((hls->max_seg_size > 0 && (vs->size + vs->start_pos >= hls->max_seg_size)) || !byterange_mode) {
|
||||
AVDictionary *options = NULL;
|
||||
char *filename = NULL;
|
||||
if (hls->key_info_file || hls->encrypt) {
|
||||
|
@ -2485,14 +2485,15 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||
if (hls->flags & HLS_SINGLE_FILE) {
|
||||
vs->start_pos += vs->size;
|
||||
} else if (hls->max_seg_size > 0) {
|
||||
vs->start_pos = new_start_pos;
|
||||
if (vs->size >= hls->max_seg_size) {
|
||||
if (vs->size + vs->start_pos >= hls->max_seg_size) {
|
||||
vs->sequence++;
|
||||
sls_flag_file_rename(hls, vs, old_filename);
|
||||
ret = hls_start(s, vs);
|
||||
vs->start_pos = 0;
|
||||
/* When split segment by byte, the duration is short than hls_time,
|
||||
* so it is not enough one segment duration as hls_time, */
|
||||
} else {
|
||||
vs->start_pos = new_start_pos;
|
||||
}
|
||||
} else {
|
||||
vs->start_pos = new_start_pos;
|
||||
|
|
Loading…
Reference in New Issue