1、av_rescale_q
//多少多少的累加 ,time_base 是 1/25000,如果是25帧,每次就累加1000,如果按照帧率来也行
//但是如果解码的话,需要按照这个,如果设置编码是没有关系的
计算出来的时间戳packet_time = av_rescale_q(pFrame->pkt_dts, pFormatCtx->streams[videoindex]->time_base, AVRational{ 1,AV_TIME_BASE });
中是 40000= 1000* (1/25000)/ (1/1000000) 也就是说此时的时间戳是 第一帧的时间戳是40ms
总的说 pFrame->pkt_pts 每次累加的量是根据 pFormatCtx->streams[videoindex]->time_base 来定的,
由此推出编码时如果 pFormatCtx->streams[videoindex]->time_base 是 帧率,那么编码时设置的packet的pts可以每次累加1,反之,不行
解码时 只能通过这样获得正确的时间戳 packet_time = av_rescale_q(pFrame->pkt_dts, pFormatCtx->streams[videoindex]->time_base, AVRational{ 1,AV_TIME_BASE });
2、流开始时间
pFormatCtx->streams[videoindex]->start_time 是2000,该值还有可能是负值
视频流解码成功后的 got_frame之后得到的 第一帧的 pFrame->pkt_dts = 2000,正好和该视频流的start_time对应