【问题标题】:How can I send video stream to client side (Browser) by using RTSP如何使用 RTSP 将视频流发送到客户端(浏览器)
【发布时间】:2018-04-06 15:38:28
【问题描述】:

我想实现如下:

  1. 使用 RTSP(即 完成)
  2. 通过 OpenCV 处理图像(完成)
  3. 将图像发送到浏览器显示(这是问题)

第三部分我想通过 RTSP 协议将图像作为视频流发送。

注意:服务端使用的语言是Java(OpenCV也是Java),服务端是TomCat。

如果有人认为使用RTSP来实现不是更好,那么实现这个功能的最佳方式是什么,因为RTSP是专门针对视频流的,所以我认为这可能是更好的选择。

【问题讨论】:

  • 你可以通过opencv+ffmpeg+ffserver来实现。我可以写一个详细的答案,但需要一段时间。
  • 好的,感谢您的帮助。是的,我现在使用 ffmpeg 通过 RTSP 获取流,但现在通过 RTSP 发送回 clink 是个问题,如果我使用 UDP/TCP 等其他技术可能不是最好的方法,尤其是对于长时间运行的应用程序.
  • 没有插件是无法发送rtsp到浏览器的。
  • 您是否有理由要使用 RTSP 而不是更常用的流式传输协议之一进行输出?
  • 没问题,任何协议,如果可以更好地工作(稳定、快速和更少的计算时间)都欢迎。如果您知道更好的方法,请建议我,我更喜欢 RTSP,因为它对于视频流来说是特殊的。

标签: java opencv video rtsp


【解决方案1】:

您选择的解决方案很可能取决于您正在构建的系统类型。

如果您有少数用户愿意将插件添加到他们的浏览器中,那么您所概述的基于 RTSP 的方法可能会起作用 - 您可以尝试使用的 chrome 示例插件

更常用的解决方案是使用代理或流式服务器将 RTSP 流转换为 HTTP 流 - 同样,系统的规模和大小可能会决定您要在此处执行的操作。

“劳斯莱斯”解决方案可以让您以尽可能高质量的方式吸引尽可能多的用户(基于当前的情况 - 视频不断变化......)可能是:

  • 使用 h.264 编码的视频流
  • 转码为多个比特率版本以支持 ABR
  • 打包成分段的 mp4 并使用 HLS 和 MPEG DASH 进行流式传输(以实现最大的设备覆盖范围)

ABR 本质上允许客户端设备或播放器以块的形式下载视频,例如 10 秒块,并从最适合当前网络条件的比特率中选择下一个块。

这里有一个使用 GStreamer、开源流媒体服务器和 hls 流媒体的示例:https://stackoverflow.com/a/35002374/334402

我确实意识到您的问题提到了 TomCat 和 Java,但是如果您确实想要这种级别的服务,那么我真的很犹豫要自己从头开始构建它,因为流式服务器中有很多专业细节。

【讨论】:

  • 感谢您的回复!我要构建的系统没有那么复杂,它会运行在一个LAN(局域网)中,而且大多数时候只有一个显示客户端,所以我想选择一个计算时间少的协议和带宽,连接稳定,一台PC最多可以处理8路流。如果视频传输的计算成本非常高,那么图像处理的时间就不够了,最终无法满足实时性要求。
  • 在 LAN 上可能不会出现带宽问题,除非您的 LAN 非常繁忙,而且听起来您不需要多个比特率,因此您可以简单地从 RTSP 转换为 HTTP 或HLS 在您的服务器上使用 ffmpeg - 请参阅此处的一些 RTSP 到 HLS 的答案,例如:stackoverflow.com/q/19658216/334402。请注意,您可能正在解码每一帧以进行处理,您也可能有更多选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多