Bug fix for libav MPEG4 video frame rate encoding.
This commit is contained in:
parent
b514c143b6
commit
1dd9036da6
|
@ -821,9 +821,12 @@ static int initVideoStream( enum AVCodecID codec_id, OutputStream *ost )
|
||||||
AVCodecContext *c;
|
AVCodecContext *c;
|
||||||
double fps;
|
double fps;
|
||||||
int fps1000;
|
int fps1000;
|
||||||
|
unsigned int usec;
|
||||||
|
|
||||||
fps = getBaseFrameRate();
|
fps = getBaseFrameRate();
|
||||||
|
|
||||||
|
usec = (unsigned int)((1.0e6 / fps)+0.50);
|
||||||
|
|
||||||
fps1000 = (int)(fps * 1000.0);
|
fps1000 = (int)(fps * 1000.0);
|
||||||
|
|
||||||
/* find the video encoder */
|
/* find the video encoder */
|
||||||
|
@ -866,8 +869,16 @@ static int initVideoStream( enum AVCodecID codec_id, OutputStream *ost )
|
||||||
* timebase should be 1/framerate and timestamp increments should be
|
* timebase should be 1/framerate and timestamp increments should be
|
||||||
* identical to 1. */
|
* identical to 1. */
|
||||||
//ost->st->time_base = (AVRational){ 1000, fps1000 };
|
//ost->st->time_base = (AVRational){ 1000, fps1000 };
|
||||||
ost->st->time_base.num = 1000;
|
if ( codec_id == AV_CODEC_ID_MPEG4 )
|
||||||
ost->st->time_base.den = fps1000;
|
{ // MPEG4 max num/den is 65535 each
|
||||||
|
ost->st->time_base.num = 1000;
|
||||||
|
ost->st->time_base.den = fps1000;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ost->st->time_base.num = usec;
|
||||||
|
ost->st->time_base.den = 1000000u;
|
||||||
|
}
|
||||||
c->time_base = ost->st->time_base;
|
c->time_base = ost->st->time_base;
|
||||||
c->gop_size = 12; /* emit one intra frame every twelve frames at most */
|
c->gop_size = 12; /* emit one intra frame every twelve frames at most */
|
||||||
c->pix_fmt = AV_PIX_FMT_YUV420P;
|
c->pix_fmt = AV_PIX_FMT_YUV420P;
|
||||||
|
|
Loading…
Reference in New Issue