实现android视频直播的库,主要实现的功能有RTSP协议、H263/H264编码、RTP/RTCP协议打包等
1、分析net.majorkernelpanic.streaming.rtp:
1)H264Packetizer
H264Packetizer负责读取h264的视频帧,然后打包封装为rtp包。Rtp头是在RtpSocket初始化时默认生成了的。
当读取到NALUtype 5时, 会先将NALU type 7 (SPS) and 8 (PPS)转化为STAP-ANAL (NAL type 24)封为一个RTP包发送出去,然后再打包发送NALU type 5。
打包时,如果包大小小于MTU,默认使用Single NAL unit的方式打包为Rtp包,打包时去除 "00 00 01" 或 "00 00 0001" 的开始码, 把其他数据封包的 RTP 包即可。
如果包大小大于MTU,则会利用FU-A方式分包发送。
H264Packetizer和RtpSocket同时会计算好各个包的sequencenumber和timestamp。
图H264中的NALU类型定义
图 Rtp中的NALU类型定义
<