rtsp组播在一些场景下比单播更合适,比如电子教室等,单播每一路都要占相同带宽,带宽要求比较高,并且路数多了也容易丢包。组播只占一路带宽。不过组播需要路由器,交换机支持(比如 IGMP协议,组播组协议等). 并且有些无线路由器不支持。另外组播只能通过rtp over udp的形式传输。不支持tcp传输.
rtsp组播实现方式,首先sdp和点播不同,sdp需要包含rtp端口和组播地址。例如:
m=video 20786 RTP/AVP 96
c=IN IP4 232.0.27.173/20
rtp端口是20786, rtcp端口是20787. IPv4组播地址是: 232.0.27.173. TTL是20.
另外组播按照组播源划分有两种,一种是ASM, 一种SSM. 对于ASM来说,任意一个发送者都可以做组播源,向组播组发包,如果是rtp包的话,rtp包来自多个组播源,这样播放器收到数据后可能就乱掉了。而SSM的话,接收者可以指定组播源,并且播放器可以根据rtp包的源地址进行过滤(详情请参考rfc4570, sdp需要增加"source-filter"属性.
接下来实际看看效果,从github下载rtsp组播发布端(SmartPublisherDemo.exe)和rtsp组播播放器(SmartPlayer.exe).
组播发布端配置:
1. 双击打开SmartPublisherDemo.exe, 配置好视频源,分辨率,码率等:
2. 点击"配置查看Rtsp服务", 配置rtsp 组播server:
3. 点击"发布rtsp流"就可以发布组播流:
播放组播流
1. 打开 SmartPlayer.exe, 输入组播播放地址,点击播放即可:
到此组播测试完成,组播对网络配置有些要求,更问题qq群: 294891451 499687479 . qq:2679481035 github