У меня есть time_base 90000 с частотой кадров 30. Я могу сгенерировать видео h264 и заставить его работать в VLC, но это видео не работает в плеере браузера.Если я изменю time_base на 30, он будет работать нормально.
Примечание. Я соответствующим образом изменяю frame-> pts в соответствии с временной базой.
Примечание. Видео не имеет аудиопотока
//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);
Любые идеи о том, почему второй пример работает, а первый не работает в видеопроигрывателе HTML5.