Mp4格式分析:Adobe的sample1_1500kbps.f4v文件格式之三:mp4 to rtmp packets
2012-11-18 09:01
489 查看
上篇文章讲了解析mp4的帧序列,这篇文章讲读取帧的时间戳和类型,以及打包成rtmp packet。
所以flv的包可以直接读取tag的data后发送,而mp4的数据需要在前面加5个字节的头后才能作为data发送出去。
下图是flv的结构:
其中,mp4的mdat读出来的数据,实际上是FlvVideoData这个结构。需要在前面加上FlvVideoTagHeader这个结构(5字节)。
mp4的帧类型,由box(F4vSyncSampleBox,"stss",0x73747373)定义,在这个表中的是关键帧。
所以在读取track的信息时,需要把帧类型也读出来。
sample_delta:1001(0x000003E9)
表示每帧是1001个时间单位。单位大小是在box(F4vMediaHeaderBox,"mdhd",0x6D646864)的timescale中定义,例如:
timescale:30000(0x00007530)
所以一帧是:0.0333666666666667秒=33.36666666666667毫秒。
RTMP/FLV结构
mp4的mdat的video/audio数据,需要加上5个字节的头,打上时间戳后才能以rtmp包发送出去,rtmp包和flv的格式是一样的。所以flv的包可以直接读取tag的data后发送,而mp4的数据需要在前面加5个字节的头后才能作为data发送出去。
下图是flv的结构:
其中,mp4的mdat读出来的数据,实际上是FlvVideoData这个结构。需要在前面加上FlvVideoTagHeader这个结构(5字节)。
frame_type
帧类型是1或2,表示I和P/B帧。mp4的帧类型,由box(F4vSyncSampleBox,"stss",0x73747373)定义,在这个表中的是关键帧。
所以在读取track的信息时,需要把帧类型也读出来。
codec_id
对于h264视频而言,codec_id是7。packet_type
对于packet_type,若为0表示是SequenceHeader,存储在box(F4vBox,"avcC",0x61766343)中的,包含了编码信息,是第一个包。同时composition time也是0。composition_time
这个是在box(F4vCompositionTimeToSampleBox,"ctts",0x63747473)中定义的,在解析帧类型时需要读出来。帧时间
每一帧的时间是固定的,在box(F4vDecodingTimeToSampleBox,"stts",0x73747473)中定义,例如:sample_delta:1001(0x000003E9)
表示每帧是1001个时间单位。单位大小是在box(F4vMediaHeaderBox,"mdhd",0x6D646864)的timescale中定义,例如:
timescale:30000(0x00007530)
所以一帧是:0.0333666666666667秒=33.36666666666667毫秒。
相关文章推荐
- Mp4格式分析:Adobe的sample1_1500kbps.f4v文件格式之二:moov分析
- Mp4格式分析:Adobe的sample1_1500kbps.f4v文件格式之一,文件结构
- mp4(H264容器)的详细文件格式分析
- mp4(H264容器)的详细文件格式分析
- mp4(H264容器)的详细文件格式分析
- mp4(H264容器)的详细文件格式分析 转自:http://blog.csdn.net/szu030606/article/details/5943279
- IOS 基础媒体文件格式语法描述和语意(MP4文件格式分析实例)
- MP4文件格式分析及分割实现(附源码)
- RTMP 协议MP4(f4v)格式视频VOD点播实现过程
- ffmpeg开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer)
- iOS RTMP 视频直播开发笔记(2) – 了解 MP4 文件格式
- MP4文件格式分析及分割实现(附源码)
- mp4(H264容器)的详细文件格式分析
- mp4(H264容器)的详细文件格式分析
- mp4(H264容器)的详细文件格式分析
- ffmpeg开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer)
- mp4(H264容器)的详细文件格式分析
- ffmpeg源码分析--4.关于mpeg文件格式1总
- 分析.lds文件格式
- PHP文件缓存内容保存格式实例分析