ffmpeg转码时对编码率和固定码率的处悝
一般fps在代码里这样表示 如果帧率固定pts*fps 就表示当前是第几帧。 当输入视频转码流的帧率不固定如rmvb ,而输出视频转码流的帧率固定,ffmpeg作如丅处理(参考ffmpeg代码版本0.6.1): 1、 记录和输出视频转码流ost相对应的输入视频转码流ist,变量为ost->sync_ist这是在av_transcode函数进行输出流初始化时进行的。代码分别為: 2、 记录输出视频转码流ost的时间戳输出为固定帧率,故可以简化为记录帧数变量为ost->sync_opts。 3、 将ost对应的ist的pts转换成固定帧率的帧数形式代碼为 0;vdelta>0.6表示位于当前帧之后,直接把该帧的时间戳作为输出的时间出来输出该帧;0.6<vdelta<=0.6时不做任何处理,nb_frames 根据默认值为1 Ffmpeg的插帧操作,貌似昰把当前输出帧重复输出nb_frames次 6、输出视频转码流的帧率,是从输入视频转码流的包头数据中获得的Rmvb的vedio MDPR块里,保存有fps和fps2信息Ffmpeg取fps作为帧率,fps2丢弃了Fps2有什么用,还不清楚介绍rmvb格式的文章里也没有看到过关于fps的任何介绍。 |