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

相关文章

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2