c++ - 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 个并发流同步,即使一个以相对于另一个的延迟开始。
解决方案
我终于找到了一种解决方法以及为什么会有这个“错误”。
快速回答:将第 67 行的 if 条件设置为 false,即
if (smsExists && isFirstLookupInSession) {
变为
if (false) {
说明:每次新会话开始时,isFirstLookupInSession
变量设置为true
,会话被删除并重新创建。
我写信给live555的支持,Finlayson告诉我,我引用
“LIVE555 媒体服务器”代码总是打算以这种方式工作,并且打算成为一个没有修改其代码的“独立设备”(例如,通过更改“reuseFirstSource”的值)。
因此,通过 Live555 创建 RTSP 服务器的唯一解决方案是从 testProgs 示例开始创建您自己的服务器。此处提出的解决方法可能会产生不需要的行为,但对于具有多个流的简单 rtsp 服务器来说,这很好。
推荐阅读
- c# - 光子库离线模式问题
- visual-studio - SQL 更改自动化的 VS2019 错误:“不支持关键字:'多个活动结果集'”
- cuda - 使用流运行纹理对象
- reactjs - 如何从自定义事件将道具传递给 React Big Calendar?
- django - DB2 和 Django - 为什么表总是按列创建?
- azure - 如何从 Azure 中的 SSH 密钥中查找公钥的值
- python - Geeks for Geeks IDE 和我的 PyCharm IDE 上的不同输出。有什么问题?
- reactjs - 如何在输入标签中赋予聚焦css效果
- regex - 仅当集合中的所有字符都存在时才匹配
- eclipse - Eclipse Plugin Development Default Key Bindings:特殊键(Shift、Alt等)的键码是什么?