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

2024-02-22 03:48

本文主要是介绍Darwin Stream server(DSS服务器)的Relay(中继/转发)设置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


A机播放一个流test.sdp


B机relayA机的test.sdp,生产test2.sdp



两路流均能播放


查看播放状态


先说一下需求:

有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机发送的视频流了。



这篇关于Darwin Stream server(DSS服务器)的Relay(中继/转发)设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/734043

相关文章

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.