У меня есть time_base 90000 с частотой кадров 30. Я могу сгенерировать видео h264 и заставить его работать в VL C, но это видео не работает в веб-плеере с аппаратным ускорением chrome, использующем Intel HD Graphics 530. Если я изменю time_base на 30, он будет работать нормально.
Примечание: я изменяю frame-> pts соответственно, чтобы соответствовать time_base. Примечание. Видео не имеет аудиопотока
//header.h
AVCodecContext *cctx;
AVStream* stream;
Вот пример нерабочего кода
//source.cpp
stream->time_base = { 1, 90000 };
stream->r_frame_rate = { fps, 1 };
stream->avg_frame_rate = { fps, 1 };
cctx->codec_id = codecId;
cctx->time_base = { 1 , 90000 };
cctx->framerate = { fps, 1 };
// ......
// add frame code later on timestamp are in millisecond
frame->pts = (timestamp - startTimeStamp)* 90;
Вот пример работающего кода
//source.cpp
stream->time_base = { 1, fps};
stream->r_frame_rate = { fps, 1 };
stream->avg_frame_rate = { fps, 1 };
cctx->codec_id = codecId;
cctx->time_base = { 1 , fps};
cctx->framerate = { fps, 1 };
// ......
// add frame code timestamp are in millisecond
frame->pts = (timestamp - startTimeStamp)/(1000/fps);
Любые идеи о том, почему второй пример работает, а первый - в проигрывателе видео.