FFmpeg In Android - H264码流解码/保存Yuv

本节例子源码_NativeH264Android,修改自ffmpeg源码目录/doc/examples/decode_video.c

H264的码流结构
H.264原始码流(又称为“裸流”)是由一个一个的NALU组成的,包括I帧,B帧,P帧等等,他们的结构如下图所示:

其中每个NALU之间通过startcode(起始码)进行分隔,起始码分成两种:001(3Byte)或者0001(4Byte)。如果NALU对应的Slice为一帧的开始就用0001,否则就用001。H.264码流第一个 NALU是 SPS(序列参数集Sequence Parameter Set),H.264码流第二个 NALU是 PPS(图像参数集Picture Parameter Set).
简单来说码流是这样的byte数组:0001+SPS+0001+PPS+0001+NALU+0001+NALU+…,解码开始时,需要先把0001+SPS+0001+PPS"喂"给解码器,然后将后面的一帧数据0001+NALU,继续"喂"给解码器,然后得到一张解码出来的yuv保存/显示,再"喂"下一帧数据0001+NALU,这样循环直到码流结束.

转:怎么样获得H264原始码流
转:视音频数据处理入门:H.264视频码流解析

猜你喜欢

转载自blog.csdn.net/kingdam578/article/details/83347962