H264码流生成快进文件关键技术概述
对于快进/快退文件的生成,行业内一般以VLC正常播放作为鉴定标准,要使自己抽帧生成的码流在VLC播放正常,不仅仅是抽取关键帧就OK,抽帧只是第一步,总结来说,需要以下措施:
抽取关键帧
这个过程中,需要抽取完整的关键帧,在264码流中,码流层次没有帧的概念,帧由若干slice组成,如果编码器编码过程采用了分片,那么你需要将属于同一帧的slice都拿出来。一般来说,应用与广电行业的264编码器不采取分片,一个帧就是一个片。例外情况是,当码流编码为隔行视频,一个帧被编码为两个片,每个片是一个场。隔行视频中,I片后经常紧跟一个p片,他们具有相同的frame_num,这时你需要将p片也拿出来,否则i帧是不完整的。
PTS, DTS PCR 时间戳调整
最好的效果是调整到没有PCR精度错误,间隔错误,以及PTS错误,不过若做简单一些,保证PCR精度正确就可以。前提是PTS变化间隔不要过大,否则影响播放效果流畅程度。
frame_num 调整
仅当码流中关键帧为I帧时需要调整,IDR帧则不必。frame_num被解码器用于控制解码顺序,我不清楚为什么IDR帧的frame_num总为0而I帧却不是,事实是,frame_num的不连续造成vlc播放时认为过多的迟到帧,所以需要把它调整连续
对于VLC来说,经过上述调整就可以流畅播放,而其他如mplayer类会瞬间播完,因为这类播放器按fps播放,对此你需在码流中填充零动作P帧,以维持帧率恒定
(转载请注明作者和出处 easyice.cn ,请勿用于任何商业用途)