FFmpeg H264码流格式说明
2018-01-15 09:49
761 查看
背景知识
IDR: 在H.264中,图像以序列为单位进行组织。一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这里可以获得重新同步的机会。IDR图像之后的图像永远不会使用IDR之前的图像的数据来解码。IDR 图像一定是 I 图像,但 I 图像不一定是 IDR 图像。I帧之后的图像有可能会使用I帧之前的图像做运动参考。
NALU类型
标识NAL单元中的RBSP数据类型,其中,nal_unit_type为1, 2, 3, 4, 5及12的NAL单元称为VCL的NAL单元,其他类型的NAL单元为非VCL的NAL单元。
0:未规定
1:非IDR图像中不采用数据划分的片段
2:非IDR图像中A类数据划分片段
3:非IDR图像中B类数据划分片段
4:非IDR图像中C类数据划分片段
5:IDR图像的片段
6:补充增强信息 (SEI)
7:序列参数集
8:图像参数集
9:分割符
10:序列结束符
11:流结束符
12:填充数据
13 – 23:保留
24 – 31:未规定
av_read_frame函数打印当前接收的NALU单元的类型
nal_unit_type: 7, nal_ref_idc: 3
nal_unit_type: 8, nal_ref_idc: 3
nal_unit_type: 6, nal_ref_idc: 0
nal_unit_type: 5, nal_ref_idc: 3
说明I帧前面就会有SPS/PPS图像参数的相关信息,实际上当收到I帧,也就可以解码出图像(会根据前面的SPS/PPS参数进行解码参数的设置),虽然FFmpeg内部会缓冲几帧,但是缓冲的帧速度还是
很快的根本不需要考虑延时
当然,如果是播放文件的话,在播放结束后,要想取出来就需要传递空的AVPacket进去,需要调用avcodec_send_packet(pAVCodecContext, NULL)
才能够播放完毕
参考 http://www.bubuko.com/infodetail-2106896.html https://www.cnblogs.com/lidabo/p/4582040.html
IDR: 在H.264中,图像以序列为单位进行组织。一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这里可以获得重新同步的机会。IDR图像之后的图像永远不会使用IDR之前的图像的数据来解码。IDR 图像一定是 I 图像,但 I 图像不一定是 IDR 图像。I帧之后的图像有可能会使用I帧之前的图像做运动参考。
NALU类型
标识NAL单元中的RBSP数据类型,其中,nal_unit_type为1, 2, 3, 4, 5及12的NAL单元称为VCL的NAL单元,其他类型的NAL单元为非VCL的NAL单元。
0:未规定
1:非IDR图像中不采用数据划分的片段
2:非IDR图像中A类数据划分片段
3:非IDR图像中B类数据划分片段
4:非IDR图像中C类数据划分片段
5:IDR图像的片段
6:补充增强信息 (SEI)
7:序列参数集
8:图像参数集
9:分割符
10:序列结束符
11:流结束符
12:填充数据
13 – 23:保留
24 – 31:未规定
av_read_frame函数打印当前接收的NALU单元的类型
nal_unit_type: 7, nal_ref_idc: 3
nal_unit_type: 8, nal_ref_idc: 3
nal_unit_type: 6, nal_ref_idc: 0
nal_unit_type: 5, nal_ref_idc: 3
说明I帧前面就会有SPS/PPS图像参数的相关信息,实际上当收到I帧,也就可以解码出图像(会根据前面的SPS/PPS参数进行解码参数的设置),虽然FFmpeg内部会缓冲几帧,但是缓冲的帧速度还是
很快的根本不需要考虑延时
当然,如果是播放文件的话,在播放结束后,要想取出来就需要传递空的AVPacket进去,需要调用avcodec_send_packet(pAVCodecContext, NULL)
才能够播放完毕
参考 http://www.bubuko.com/infodetail-2106896.html https://www.cnblogs.com/lidabo/p/4582040.html
相关文章推荐
- 利用ffmpeg0.6.1把.h264纯码流打包成.mp4 .avi等格式
- 利用ffmpeg0.6.1把.h264纯码流打包成.mp4 .avi等格式 (转载)
- H264格式具体说明
- MP4文件两种格式AVC1和H264的区别及利用FFMPEG demux为h264码流事项
- 如何分离MP4、FLV等格式视频为H264码流
- 利用ffmpeg将RTSP传输的h264原始码流保存到文件中
- H264格式说明及解析
- H264视频码流格式浅析
- MP4文件两种格式AVC1和H264的区别及利用FFMPEG demux为h264码流事项
- FFMPEG 实时解码网络H264码流,RTP封装
- H264格式具体说明
- 使用ffmpeg转换文件格式,及ffmpeg参数说明
- H264格式具体说明
- android 基于ffmpeg将视频采集的nv21转h264格式数据
- 利用ffmpeg将RTSP传输的h264原始码流保存到文件中
- ffmpeg实战教程(一)Mp4,mkv等格式解码为h264和yuv数据
- 【FFMpeg视频开发与应用基础】三、调用FFmpeg SDK对H.264格式的视频压缩码流进行解码
- 【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
- H264格式具体说明
- FFMpeg压缩Android摄像头数据写成H264格式文件