在对H264进行编解码分析时碰到一個完整视频帧被切分成多个Slice用于网络媒体传输的情况。而且接收端进行解码时需要一个完整帧(FFmpeg解码不需要拼接内部已实现),因此怎么拼接多个Slice呢
对于H264视频流中关于NAL Unit句法、Slice Header结构等不是本文讲述的重点,相关资料可在网上查询但需要对H264流媒体协议格式中的AVCC及Annex B格式有一定了解。本文主要以Annex B视频格式协议讲解
若完整的视频帧未被切分成多个slice时,可直接被解码成YUV或RGB数据但是当切分成多个slice,需要根据first_mb_in_slice计算每个幀片所在位置
0x63,则与上0x80为0x0则表示不是第一片(不是第一个片时的值在上一包的基础上会出现递增)。可归纳规律(假设的数据):
以上就昰合并的基本思路一般情况下I帧不会被切分成多个slice,而是以完整帧进行传输P帧多数情况下存在切分的情况。