Darwin Stream server(DSS服务器)的Relay(中继/转发)设置

先说一下需求:

有4台主机ABCD。A机上跑live555,将摄像头的实时视频编码为H264,用RTSP协议(URL:rtsp://IpAddr-B/CamLive.sdp)将视频流推送至DSS服务器B。B将收到的流转发给DSS服务器C。客户端D运行VLC,用地址rtsp://IpAddr-C/CamLive.sdp访问视频流。

在上述直播转发的实验过程过程中,顺带实现点播转发。在DSS服务器B上运行播放自带的mp4文件f1.mp4和我自己录制的mp4文件f2.mp4,并向DSS服务器C转发。客户端D运行VLC,用地址rtsp://IpAddr-C/File1.sdp和rtsp://IpAddr-C/File2.sdp访问点播流。


实验过程中在网上搜集了很多相关配置的资料,出现频率较高的有(1)《D​a​r​w​i​n​ ​r​e​l​a​y​配​置 / Darwin服务器安装以及中继配置》,(2)《Darwin Streaming Server Relay Setting》,(3 论文)《基于Darwin Streaming Server快速流媒体中继实现》。它们给了我很多帮助,同时也带来了很多误导,本文在此逐一点评。(仅限于技术探讨,说的不对的地方还请原作者以及各位指正。)

文献地址:

(1)http://wenku.baidu.com/link?url=Gm3fYUEO_wrn_toJamKzMvR468uVE0dfIsaHPhkrNVjCHDypyei5uT0KpzzHcnCytqbQdyIpiYaZBGDGQKhBhFRbQvz1vqObE1AivrqB65K

(2)http://blog.chinaunix.net/uid-20751538-id-252614.html

(3)http://www.doc88.com/p-877811973239.html


好,现在开始。


Step1:将B机和C机的DSS服务和webadmin启动。




Step2:对于直播,在A机上启动Live555向B机推送视频流。对于点播,在B机上将视频文件加入播放列表。





在这一步中,对于直播,Live555程序已经经过改写,运行在A机上,将视频监控的实时流主动向B机推送。B机接收到A机推送的流后会自动在Movies目录下生成live51_30.sdp。

对于点播,直接在B机上配置播放列表即可,本例中,testf使用了DSS自带的视频文件sample_300kbit.mp4,testf2使用了我自己录制的视频文件aaa_after.mp4。这里要注意的是,对于自己录制的mp4文件,需要经过处理,添加RTSP头部后才能播放。我用的处理自有视频文件的程序是MP4Box,下载地址。配置玩播放列表后别忘了点击播放按钮是status从stop编程play,点击播放按钮的时候,会在B机的Movies目录下生成testf.sdp和testf2.sdp。

至此,B机上的配置全部结束。本例中B机的IP是192.1.101.30,可以用VLC通过rtsp://192.1.101.30/live51_30.sdp,rtsp://192.1.101.30/testf.sdp,rtsp://192.1.101.30/testf2.sdp 这三个URL观看从B机发送的视频流。


Step3:在C机上配置转发/中继,就是Relay。





本例中,live51对应B机中的直播中继配置,testf和testf2分别对应B机中的自带视频点播和录制视频点播。因为流数据从B发出以后就不区分文件还是直播了,所以三个配置大同小异。

Source Setting中的地址填写B机的地址,挂载点填写B机上生成的sdp文件名;我只尝试了Request incoming stream这种方式,需要填写B机的用户名和密码。(这里有一点待定,我不填用户名和密码好像也行,所以猜测此处的用户名和密码可能是针对加密rtsp流的,不一定是B机DSS是管理员用户名和密码)。

Destination Settings中地址填写127.0.0.1,因为目的地是C机本机,我选择了Announced UDP方式,挂载点留空白,这样DSS会在C机的Movies目录下生成和B机上同名的sdp文件,用户名密码我填了C机的管理员用户和口令(安装DSS时配置的那个)。

选择Announced UDP的好处是DSS会在目的地自动生成sdp文件,但根据手册上的描述,该方式不具备穿越防火墙的能力,也就是说适用于局域网。在实验过程中我也尝试了Unannounced UDP方式(手册上说这种方式适合穿越防火墙,应该可以用在Internet上),需要填写一个目的地的监听端口号,和最大TTL数(用于控制传输距离)。但该方法需要手工将B机上的sdp文件拷贝到C机,并且需要更改端口,由于对sdp文件内容不太了解,成功的次数少,而失败的次数多。(我怀疑是不是跟下图中两处10位数字有关,那是session号吗?是不是每次重连都要修改sdp文件?还有两处IP地址分别是什么含义,到底哪一个有用?恳请牛人指导解答)最终作罢。


这里要点评一下前面提到的3篇文档,第一篇《D​a​r​w​i​n​ ​r​e​l​a​y​配​置 / Darwin服务器安装以及中继配置》还是比较靠谱,他用的就是Unannounced UDP方式;第二篇《Darwin Streaming Server Relay Setting》中讲到需要在两台DSS服务器上分别配置Relay,一推一拉,还很认真的给出了两台DSS服务器上的Relay Status(如下图),其实根据实验,不管是直播还是点播,都不需要在B机上配置Relay,只要在C机上配就行了。至于第三篇《基于Darwin Streaming Server快速流媒体中继实现》,应该是误导了不少人,文档二的作者也没看明白这篇论文,主要问题集中在论文第3.3节的小标题8上:文中说将第一台DSS服务器上的playlist目录内的文件夹拷贝到第二台DSS服务器上,然后启动第二台DSS的playlist,但我尝试后发现无法启动playlist,我猜测原因可能是因为原始视频文件仍然在第一台DSS上的缘故,如果将视频文件也拷贝到第二台DSS上,那就没有第一台什么事了,也谈不上转发。况且使用这种方式每当第一台DSS增加一路视频,都需要做拷贝操作,似乎并不合理。如果我有幸能让论文原作者看到此博文,请指正。


好了,回到主题,至此就配完了DSS转发,本例中C机的IP是192.1.101.77。现在可以使用可以用VLC通过rtsp://192.1.101.77/live51_30.sdp,rtsp://192.1.101.77/testf.sdp,rtsp://192.1.101.77/testf2.sdp 这三个URL观看从C机发送的视频流了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QTSS服务器是当今三大流媒体服务器之一,其开源的版本是darwin streaming server。作为三大主要流式媒体应用中唯一一个开放源代码的产品,DSS让开发人员能够研究流媒体最底层的技术,大幅度提高设计水平。事实上,当前国内外许多公司正是在DSS的基础上开发了自己的流式媒体相关产品。但是DSS源码量比较大,简单统计一下5.5版本总共大约13万行代码,虽然DSS源码组织结构很好,但是入门的门槛还是比较高。 为降低入门门槛,首先要做的就是把DSS源码简化,下面简单介绍一下我对5.5版本裁剪优化的过程。 从网上下载到5.5版的源码,整个压缩包有20多兆,解开压缩包,里面有很多测试用的多媒体文件,实际代码小很多。 用VC6打开WinNTSupport子目录下的工程文件StreamingServer.dsw。选FileView标签页展开 StreamingServer files模块前面的加号,可以看到主程序依赖四个模块分别是 CommonUtilitiesLib APICommonCode APIStubLib SafeInternalStdLib QTFileLib,再点开这几个模块前面的加号,可以看到整个工程就只依赖这几个模块。把不用的其他模块统统的删掉,好畅快淋漓哦。庞大的DSS现在只剩下6个大模块了。 分大模块点开所有的文件,鼠标光标自动在每个文件的顶端,所有文件都按两下回车,再一起保存,为的是把工程需要的文件做个时间标记,所有修改时间不是当前的文件都是没有实际使用的文件。 哈哈,有很好的办法去除实际不使用的文件,在资源管理器中搜索DSS目录下的所有.h文件,把修改时间不是当前时间的文件统统删掉。同样的办法处理一遍.c文件和.cpp文件。 再在资源管理器中遍历DSS目录下的所有子目录,把即没有.h文件,有没有.c文件或.cpp文件的子目录统统删掉。 大话西游的经典台词出来了,"整个世界清净了"。 再设置StreamingServer files为Active project,编译一下。 哈哈,一次编译通过,刚才的一阵狂砍乱剁中没有删掉有用的文件。再接再励,顺便把那些即不是源码又不是VC工程文件的文件删掉,DSS现在好小巧苗条哦。 再大概统计一下源代码总共大约8.9万行,实际程序代码5.4万行。如果再删掉编译要用但最小程序不使用的如mp3,http等模块,最后可以减到4万行左右。 代码初步简化完了,就得安装程序跑跑看效果,如果上网方便可以在网上找到很多安装的教程。如果上网不方便,按照程序提示也能做好。 在VC6 IDE开发环境中点击run按钮,程序运行有提示: Darwin Streaming Server must either be started from the DOS Console using the -d command-line option, or using the Service Control Manager 看提示在命令行带-d参数再运行程序,程序有提示: Fatal Error:Could not load configuration file at c:\Program Files\Darwin Streaming Server\streamingserver.xml 很明显提示少了streamingserver.xml文件,在Darwin目录下搜streamingserver.xml文件,已经有此文件了,那就按照提示把streamingserver.xml文件拷贝到c:\Program Files\Darwin Streaming Server目录下。既然是xml文件,就用文本打开看一下了,里面好多c:\Program Files\Darwin Streaming Server\XXX 这样的路径,那就按照这些提示把相关路径都建好。 聪明的大家看到Movies子目录了,放电影的地方嘛,接着把DSS源码附带的*.3gp文件和*.mp4文件拷贝到此目录,如果担心放错目录,那就在Darwin Streaming Server目录和所有子目录中都放媒体文件。 再开VLC,用打开网络串流的方式打开 rtsp://localhost/sample_100kbit.mp4 文件。 哈哈,大功告成。 以后就是各位网友优化dss源码的事情了。祝各位网友顺顺利利地看懂源码,做出更牛牛的流媒体服务器。 来自:http://www.cnblogs.com/mcodec/articles/1735765.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值