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

相关文章

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas