live555+ffmpeg如何提取关键帧(I帧,P帧,B帧)
开发流媒体播放器的时候,特别是在windows mobile,symbian(S60)平台开发时,很可能遇到需要自己开发播放器的情况。
S60平台提供了CVideoPlayUtility接口可以实现流媒体播放器,但由于非开源,所以相对于自己开发播放器,很多操作受到限制。
live555主要用于网络流接收,ffmpeg则是对接收到的数据进行编码/解码。I帧,P帧,B帧是视频流中三种分类,其中I帧也就是关键帧
是基础帧,P帧一般根据I帧确定,而B帧需要前面两着的信息。
举例说:
1 2 3 4 5 6 7
I B B P B B I
Let's take 1,2,3.. as PTS for simplification
the out sequence for video encoder ( this equals the decoder sequence)
1 4 2 3 7 5 6
I P B B I B B
播放器LIVE555收到的序列顺序就应该是:
1 4 2 3 7 5 6
经过解码器解码,顺序又回到1 2 3 4 5 6 7这种正常顺序。
所以我们可以根据avcodec_decode_video来判断帧别。
avcodec_de