• 用Darwin实现流媒体转发程序(附源码)


    源码下载地址:https://github.com/EasyDarwin  or www.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 

  • 相关阅读:
    poj 1634
    poj 2153
    POJ 1693
    poj 1789
    POJ 2676
    vue 路由
    用 node.js 创建第一个Hello World
    js原生Ajax 的封装和原理
    BFC原理
    怎么理解js的面向对象编程
  • 原文地址:https://www.cnblogs.com/babosa/p/5904725.html
Copyright © 2020-2023  润新知