diff --git a/ffmpeg.c b/ffmpeg.c index a1b73ae3b7..7ac8228a74 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -133,6 +133,7 @@ static int audio_channels = 1; static int audio_codec_id = CODEC_ID_NONE; static int64_t recording_time = 0; +static int64_t start_time = 0; static int file_overwrite = 0; static char *str_title = NULL; static char *str_author = NULL; @@ -1255,11 +1256,12 @@ static int av_encode(AVFormatContext **output_files, if (ist->discard) goto discard_packet; - // printf("read #%d.%d size=%d\n", ist->file_index, ist->index, pkt.size); + //fprintf(stderr,"read #%d.%d size=%d\n", ist->file_index, ist->index, pkt.size); len = pkt.size; ptr = pkt.data; while (len > 0) { + int ipts; /* decode the packet if needed */ data_buf = NULL; /* fail safe */ data_size = 0; @@ -1368,8 +1370,12 @@ static int av_encode(AVFormatContext **output_files, } } #endif - /* transcode raw format, encode packets and output them */ + ipts = (double)ist->pts * is->pts_num / is->pts_den; + //fprintf(stderr,"decoded ipts=%ld %d\n",ipts,ist->pts); + /* if output time reached then transcode raw format, + encode packets and output them */ + if (start_time == 0 || ipts > (start_time / 1000000.0)) for(i=0;i