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

相关文章

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

java Stream操作转换方法

《javaStream操作转换方法》文章总结了Java8中流(Stream)API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、... 目录流创建1、list 转 map2、filter()过滤3、foreach遍历4、groupingB

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT