2016-03-21 78 views
1

我想写一个mjpg视频到HTML画布的直播流。流本地mjpg视频到HTML画布

以下内容:http://camelive.info/有一个mjpeg视频的公共摄像头列表,但他们似乎在编写框架>带框架元素的标签,我无法理解它如何在小提琴中工作。

理想的解决方案有任何活MJPG(理想的链接?)流在小提琴的HTML画布。

任何有用的资源表示赞赏,我想做到这一点,而不包括外部库(允许jQuery的)

编辑:相关阅读:How to make an snapshot from a MJPEG stream in HTML

编辑:我也有一个本地MJPG从像画例。解决方案可以使用本地流

+0

不知道这是否有帮助,但你必须检查[这个例子](https://webrtc.github.io/samples/src/content/getusermedia/face/) – Bhavik

+0

现在看它,我认为这是正确的想法。我试着暂时拿起初步小提琴 – mattyd

+0

根据你的规格,你不能。一些有问题的浏览器如chrome会让你这样做,但这是一个错误。画布drawImage仅绘制动画“img”的第一帧。 – Kaiido

回答

1

根据to specs关于画布2DRenderingContext drawImage方法,

具体地,当CanvasImageSource对象代表了HTMLImageElement动画 图像,用户代理必须使用动画的默认 图像(该格式定义的一个要被使用 时不支持动画或禁用),或者,如果不存在这样的 图像,动画的第一帧,呈现图像时0 CanvasRenderingContext2D API的。

这适用于.gif注意:,SMIL动画.SVG.mjpeg媒体。所以一旦你获取的数据中,只有一个框架应绘制在画布上。

请注意,铬has a bug和只尊重.gif图像,但他们可能会修复它的某一天。

您注意到自己的一个解决方案是使用clear-cache hack('your.url/?' + new Date().getTime();)获取另一个新帧,但是您将失去mjpeg格式(部分帧内容)的任何优势,并且无法确定何时清新会发生。

因此,如果适用,更好的解决方案是使用视频格式。视频的每一帧都可以绘制到画布上。

+0

嘿凯多多。 img url的新日期是最好的解决方案。 ! – mattyd

1

许多IP摄像机MJPEG是那里实际上是在预定的帧速率,这时候经常更新的,看起来像一个视频发送单个JPEG文件。

你需要检查相机的制造商API的正确的URL与Foscam相机,我已经做之前,下面用得到的图像流,例如,它完美的作品:

<img id='videostream' src="http://123.456.789.233:8080/videostream.cgi"> 

你显然必须得到相机的正确IP和端口号(如果存在)。

更新 -这并不意味着你不能有其他的现场视频流方法可用,它只是我知道从IP摄像机获得实时视频的最简单的方法。

更新2 - 也有一些相机具有用户名密码&所以你可能要追加那些网址videostream.cgi?user=your_user&password=your_password

希望这有助于。

+0

你只是用setTimeout更新图像吗? – mattyd

+0

@mattyd取决于你的相机的API,它可以在使用'videostream.cgi'时自动刷新图像,具体来说,Foscam有一个'snapshot.cgi',它返回一个图像,然后你必须使用'setTimeout'调用来手动刷新它。 – Yani