Rtmp 数据流转h264 的详细转码过程 一、 目的: 这段时间,因为工作上的需要,在RTMP 上做了flv 流到标准h264、 AAC 的转换
二、 RTMP 介绍: RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems 公司为Flash 播放器和服务器之间音频、视频和数据传输开发的私有协议
RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是 FLV 中的视/音频数据
它有三种变种: 1)工作在TCP 之上的明文协议,使用端口1935; 2)RTMPT 封装在 HTTP 请求之中,可穿越防火墙; 3)RTMPS 类似RTMPT,但使用的是HTTPS 连接; Rtmp 详细介绍请参照网上文档(一搜一大把) 三、 Rtmp 流转h264 基于rtmp client 端收取的数据包packet 进行解码
1、 在 rtmp 传输数据流的时候,不论是在点播情况下或者直播情况下,rtmpserver 会在流开始的时候添加File Header 和 MedadataTag
这些不需要分析
2、 数据头解析 2-1、 Tagtype,一字节 每个packet 的第一个字节代表了当前packet 的类型
0x04 表示Ping 包,0x08为 audio,0x09 为 video
0x12 为 script data
0x16 比较特殊,这个是为了实现H
264数据的直播而增加了一个数据类型
这个之后特别讨论
2-2、 Datasize, 24bit 这三个字节表述了tag 中数据段的大小
2-3、 Timestamp, 24bit 记录了每一个tag 相对于第一个tag( File Header)的相对时间
以毫秒( milliseconds)为单位
而File Header 的