【发布时间】:2015-07-08 11:58:55
【问题描述】:
我需要将来自实时源的视频流分发给多个客户端,并要求每个帧都可在所有客户端中识别。
我已经对该主题进行了研究,并得出了一个可以分享的可能解决方案。我的解决方案似乎不太理想,这是我第一次使用视频流,所以我想看看是否有人知道更好的方法。
我需要能够识别视频流中的特定帧的原因是流式传输客户端需要能够谈论它们每个人在其视频流中识别的事件之间的时间差异。
一个小例子
我想启用以下交互:
- 两个客户端应用程序 Dewey 和 Stevie 连接到流媒体服务器
- Dewey 显示流,Stevie 将其保存到磁盘
- Dewey 确定了 Stevie 感兴趣的特定视频帧,因此他想将这件事告诉 Stevie
- Dewey 从视频帧中提取一些识别信息并将其发送给 Stevie
- Stevie 使用识别信息从他当前保存的直播副本中提取相同的帧
Dewey 无法直接将帧发送给 Stevie,因为 Malcolm 和 Reese 也想告诉他有关特定视频帧的信息,而 Stevie 对他们的发现之间的时间差感兴趣。
建议的解决方案
我找到的解决方案是使用ffserver 广播 RTP 流并使用 RTCP 数据包中的时间戳来识别帧。这些时间戳通常用于同步音频和视频,而不是提供跨多个客户端的共享时间线,这就是为什么我怀疑这是解决我的问题的最佳方法。
拥有帧号似乎也是有益的,例如增加帧计数器而不是任意时间戳,后者增加了一些可能不同的偏移量,因为对于我的应用程序,我还必须参考相邻帧,并且似乎更容易计算与帧的时间差数字,而不是相反。
【问题讨论】:
-
一切顺利。我们正在尝试解决同样的问题。我们正在研究的一种方法是如何破解隐藏式字幕以在客户端之间提供更好的同步,但这也存在问题。非常感谢您的帮助。谢谢!
-
我已经发布了我们在该主题上所做的设计工作的解决方案。
标签: video ffmpeg video-streaming live-streaming