首页 > 解决方案 > Live555MediaServer 在每个新连接处重新启动流。为什么将“reuseSource”设置为 true 不能按预期工作?

问题描述

Live555MediaServer 可用于将视频文件流式传输为 rtsp 流。我有 2 个客户端 (vlc) 连接到服务器 A 和 B。我想在两个客户端中查看确切的视频流。问题是:我连接 A,10 秒后连接 B。连接 B 后,我看到的视频从头开始,而 A 继续流式传输。

我希望同步 2 个并发流。

live555 文档说将reuseFirstSource 设置为True 应该可以。因此,我尝试在 DynamicRTSSPServer:121 处将 reuseSource 设置为 true,但没有成功。当我使用客户端 B 连接到服务器时,视频从头开始重新启动。

布尔常量重用源 = True;

我希望看到 2 个并发流同步,即使一个以相对于另一个的延迟开始。

标签: c++rtsplive555

解决方案


我终于找到了一种解决方法以及为什么会有这个“错误”。

快速回答:将第 67 行的 if 条件设置为 false,即
if (smsExists && isFirstLookupInSession) {
变为
if (false) {

说明:每次新会话开始时,isFirstLookupInSession变量设置为true,会话被删除并重新创建。

我写信给live555的支持,Finlayson告诉我,我引用

“LIVE555 媒体服务器”代码总是打算以这种方式工作,并且打算成为一个没有修改其代码的“独立设备”(例如,通过更改“reuseFirstSource”的值)。

因此,通过 Live555 创建 RTSP 服务器的唯一解决方案是从 testProgs 示例开始创建您自己的服务器。此处提出的解决方法可能会产生不需要的行为,但对于具有多个流的简单 rtsp 服务器来说,这很好。


推荐阅读