ffmpeg使用time_base不等于帧速率编码的视频在HML5视频播放器中不起作用

时间:2019-07-01 15:51:28

标签: video ffmpeg encode

我的time_base为90000,帧率为30。我可以生成h264视频并使其在VLC中工作,但该视频在浏览器播放器中不工作。如果我将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);

HTML5视频播放器中关于第二个示例为何有效而第一个示例无效的任何想法。

0 个答案:

没有答案