用Darwin实现流媒体转发程序(附源码)
来源:互联网 发布:知乎删除回答重新回答 编辑:程序博客网 时间:2024/06/05 09:09
源码下载地址:https://github.com/EasyDarwin orwww.easydarwin.org
DSS源码中已经实现了由源端主动推送视频,再将视频转发到客户端的功能,在基于DSS的先侦听后推送式流媒体转发:http://blog.csdn.net/xiejiashu/article/details/8298583中已经描述,代码可以在http://download.csdn.net/detail/xiejiashu/5007454中下载到。
那么今天我们描述一下,如何实现拉模式的转发,即转发服务器接受客户端的请求,参数携带转发的url,url可以是以查询字符串的参数形式传输过来,类似于:url=rtsp://192.168.10.8/test.mp4,转发服务器再根据转发的url,经过标准的RTSP Describe、Setup、Play、RTP流程,将视频获取到,转发给客户端列表(支持分发)。
例如,在客户端中输入:rtsp://192.168.1.10/relay.sdp?url=rtsp://114.112.51.234/abc.mp4, 即可实现对rtsp://114.112.51.234/abc.mp4的转发,其中192.168.1.10为转发服务器(也可以说是代理服务器)的地址。
设计思路:
当我们在收到一路RTSP连接请求时,在DSS中为RTSPSession类对象,首先需要解析请求头部是否为转发请求,这里我们区分转发请求与普通点播请求的方式为relay.sdp,以relay.sdp为请求媒体的名称的话,我们就判定此路客户端会话为转发请求,进而解析其请求的后续部分,进行查询字符串的解析,得到需要转发的具体url,建立一路面向url源的会话,我们称之为RTSPRelaySession,RTSPRelaySession以普通RTSP客户端的角色,连接到远程源端,并通过Describe命令,获取到sdp信息进行保存,再转发到请求Describe的客户端,而且Setup、Play分别将对应的响应码返回给客户端,在转发具体的数据时,建立一路ReflectorSession,将获取到的rtp数据转发到添加进ReflectorSession转发列表的客户端中去。
------------------------------------------------------------
本文转自www.easydarwin.org,更多开源流媒体解决方案,请关注我们的微信:EasyDarwin
- 用Darwin实现流媒体转发程序(附源码)
- 用Darwin开发RTSP级联服务器(拉模式转发)(附源码)
- Darwin流媒体服务器源码分析
- RTSP流媒体转发服务器源码
- 用Darwin开发分布式流媒体服务器
- 用Darwin开发分布式流媒体服务器
- 用Darwin开发分布式流媒体服务器
- linux环境下编译Darwin流媒体服务器源码
- linux环境下编译Darwin流媒体服务器源码
- 用live555做本地视频采集转发,附源码
- 用live555做本地视频采集转发,附源码
- 基于Darwin实现的分布式流媒体直播服务器系统
- 基于Darwin实现的分布式流媒体直播服务器系统
- EasyPlayer Android安卓流媒体播放器实现播放同步录像功能实现(附源码)
- 使用ffserver实现转发实时流媒体
- 用Darwin开发RTSP级联服务器(拉模式转发)
- Darwin streaming server 流媒体服务器
- Darwin流媒体服务器的使用
- C++ MFC对话框打开文件
- EOJ 1019 着弹点
- Asp.net_防重复提交机制
- Windows下socket通信步骤
- 不用sizeof来求出int的大小(程序)
- 用Darwin实现流媒体转发程序(附源码)
- 求32位机器上unsigned int的最大值及int的最大值
- Linux内核学习之四库全书 .
- sqlite3中时间函数
- 关于TI Ducati 的部分详解
- adb shell 提示符: $改为#
- 浅谈VB.NET中的接口
- android dependencies介绍
- 【报表开发】iReport使用心得