使用Spydroid(libstreaming)作为rtsp server

本文介绍了如何使用Spydroid(libstreaming)库在Android上创建RTSP服务器,实现视频直播功能。详细解析了H264Packetizer的RTP打包过程、RtpSocket的UDP/TCP发送以及RTSP交互流程,包括DESCRIBE和SETUP指令的处理。同时,探讨了不同编码方式,如MODE_MEDIACODEC_API和MODE_MEDIACODEC_API_2,以及它们在渲染和数据获取上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现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类型定义

 

 

<
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值