darwin之发送数据流(ReflectorSession)
来源:互联网 发布:刷火车票软件 编辑:程序博客网 时间:2024/05/16 16:00
1.darwin如何管理推送的rtsp流?
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
ReflectorSession与av_stream相关联 ,通过OSRefTable*sSessionMap来管理(key:av_stream,value:ReflectorSession)
2.ReflectorSession内部如何维护rtsp流呢 ?
在其类内部维护了数组:ReflectorStream,每一个ReflectorStream代表一路流
比如一个rtsp流有音视频两路流,则需要创建两个ReflectorStream来分别管理音视频流。
3.ReflectorSession最终的目的是将流发送给所有的客户端,如何实现的?
在每一个ReflectorStream中维护了一个二维数组,数组的每一个元素代表一个rtp客户端。当有rtsp流推送到服务器上时,
会根据av_stream找到对应的ReflectStream。不断的将该流推送给所有的rtp客户端(当有客户端请求相同的av_stream时).
4.ReflectorSession何时创建?
客户端推流时:在DoSetup函数中创建
客户端取流时:在DoDescribe函数中创建
针对推模式,推流客户端推送url为*.sdp流与接流客户端接收的URL一样。因为ReflectorSession与url地址一一对应,因此DoSessionSetup内部只创建一次ReflectorSession。对模式中,ReflectorSession创建是在Dosetup中由推流客户端发送setup请求时在DoSessionSetup中创建,其余的地方调用DoSessionSetup只是引用之前创建好的ReflectorSession。
5.ReflectorSession如何与rtp客户端关联?
所有的客户端都是接受rtp流,而rtsp协议只是为了接收rtp流做铺垫。
当一个rtsp客户端连接请求流时,darwin会新分配一个RTSPSession与之通信。在RTSPSession内部(SetupRequest时)会创建RTPSession,将并所有参数一并传到QTSSReflectorModule模块去处理。
在QTSSReflectorModule模块的DoSetup函数中,将ReflectorSession与RTPSessionOutput关联。
在RTSPSession调用QTSSReflectorModule模块时,一并将 QTSS_StandardRTSP_Params参数(rtsp,rtp客户端,rtsp协议包内容)传进去。
- darwin之发送数据流(ReflectorSession)
- Darwin做直播时对ReflectorSession引用数的控制
- Darwin做直播时对ReflectorSession引用数的控制
- darwin之发送和接受数据注意事项
- darwin之发送rtp包流程
- darwin之复制字符串(Task)
- darwin之RTP协议分析(转载)
- darwin之OSRefTable使用
- darwin之解析字符串
- darwin之角色管理
- darwin之回调
- darwin之RTPSession
- darwin之数据包管理
- darwin之数据包管理
- darwin之ClientSession
- darwin之枚举值得组合使用(Task)
- Darwin之接收rtsp客户端数据(RTSPRequestStream)
- darwin之rtsp请求信息解析(RTSPRequest)
- shell 中的for、while循环及if语句
- C++的前世今生
- JDK1.8的新特性之lambda表达式的三种引用
- sql Server 数据库 设置自增建的初始值 和 增量
- HDU2021发工资咯:)
- darwin之发送数据流(ReflectorSession)
- 利用视图实现数据库表列变行
- Android 加载图片过程导致内存溢出(Out Of Memory)
- 银行行长说申请信用卡,这样选3天通过
- Java 循环练习
- JEECG树相关网上找的资料
- opencv c++文件编译
- Centos搭建Git服务器
- 并发编程之join关键字的理解