![有没有一种便宜的选项可以从 Flash 格式的 MJPEG IP 摄像机重新流式传输?](https://linux22.com/image/1283798/%E6%9C%89%E6%B2%A1%E6%9C%89%E4%B8%80%E7%A7%8D%E4%BE%BF%E5%AE%9C%E7%9A%84%E9%80%89%E9%A1%B9%E5%8F%AF%E4%BB%A5%E4%BB%8E%20Flash%20%E6%A0%BC%E5%BC%8F%E7%9A%84%20MJPEG%20IP%20%E6%91%84%E5%83%8F%E6%9C%BA%E9%87%8D%E6%96%B0%E6%B5%81%E5%BC%8F%E4%BC%A0%E8%BE%93%EF%BC%9F.png)
我们正在使用 Axis 品牌的摄像机和媒体编码器(1 个摄像机,1 个编码器),它们将 MJPEG 格式的视频输出到我们的网络服务器。然后我们需要在网站上显示这些流。客户端将能够连接到服务器,但由于我们无法解决的网络限制,无法直接访问摄像机。
我们需要的是一个软件,它可以获取这些 MJPEG 流并将它们重新转换为一种格式,以便我们可以使用 Flash 播放器(如 jwplayer 或 flowplayer)在网站上进行实时流式传输。
我们以为一款名为 WebcamXP 的廉价软件可以正常工作。它按照我们的要求工作,并通过网站上的 Flash 对象正常显示。直到我们自己的防火墙阻止我们时,我们才意识到 Flash 对象只是在不断获取 JPEG 并发出过多的 GET 请求。然后我们发现专业版确实可以以 flv 格式进行流式传输,但这似乎并不是真正的实时流式传输。它先缓冲,然后播放缓冲内容,这对我们来说是无法接受的。
图像必须是实时的。如果延迟一两秒,我们可以处理,但如果有缓冲,延迟可能会增加到几分钟,这是完全不可接受的。
有人遇到过这种问题吗?我们应该使用哪种软件来重新传输 MJPEG 视频?
答案1
我们用 php 编写了自己的 mjpeg 流媒体播放器,它可以定期为那些不想进行流媒体播放的用户拍摄快照,还可以借助一些 javascript 的帮助在 ie 中进行模拟流媒体播放... 请查看http://taylorssurf.co.nz
这样,您就可以托管服务器可以处理的客户端数量,而不是摄像机可以处理的客户端数量。还可以节省从摄像机到用户的带宽,并允许您在视频上添加叠加层。如果您的服务器上有 ffmpeg,还有另一种选择 - ffmpeg 可以读取 mjpeg 输入,然后实时输出为您需要的任何格式... 诀窍是让它保持运行 - 虽然如果您使用类似 proc_open 的东西或使用 pid 来检查进程是否仍在运行,您可以监视这一点...
您的最终选择是使用类似 splitcam 的东西将视频转换为 Windows 计算机上的另一个视频输入流,然后使用 flash media live 编码器或类似程序通过 red5 或 wowza 或 flash media server 以您需要的任何速率广播该视频流。这也不应该有太多延迟。我相信,经过一些调整,您可能已经找到了这些选项并解决了您的原始问题,但其他人可能会感兴趣...
答案2
您的 Axis 相机也应该支持 RTSP 流;如果支持,您可以使用 Wowza。
检查此链接:Wowza - 重新流式传输 RTSP 摄像头