You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	lavf/concat: compute duration if possible.
This commit is contained in:
		| @@ -157,6 +157,7 @@ static int concat_read_header(AVFormatContext *avf) | ||||
|     unsigned nb_files_alloc = 0; | ||||
|     ConcatFile *file = NULL; | ||||
|     AVStream *st, *source_st; | ||||
|     int64_t time = 0; | ||||
|  | ||||
|     while (1) { | ||||
|         if ((ret = ff_get_line(avf->pb, buf, sizeof(buf))) <= 0) | ||||
| @@ -207,6 +208,18 @@ static int concat_read_header(AVFormatContext *avf) | ||||
|     if (ret < 0) | ||||
|         FAIL(ret); | ||||
|  | ||||
|     for (i = 0; i < cat->nb_files; i++) { | ||||
|         if (cat->files[i].start_time == AV_NOPTS_VALUE) | ||||
|             cat->files[i].start_time = time; | ||||
|         else | ||||
|             time = cat->files[i].start_time; | ||||
|         if (cat->files[i].duration == AV_NOPTS_VALUE) | ||||
|             break; | ||||
|         time += cat->files[i].duration; | ||||
|     } | ||||
|     if (i == cat->nb_files) | ||||
|         avf->duration = time; | ||||
|  | ||||
|     if ((ret = open_file(avf, 0)) < 0) | ||||
|         FAIL(ret); | ||||
|     for (i = 0; i < cat->avf->nb_streams; i++) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user