【发布时间】:2017-02-14 19:42:29
【问题描述】:
使用<video id="videoID"> </video> (HTML) 时,
你可以在脚本中使用canvas = document.getElementById('canvas')(Javascript)
和videoID.play() 或videoID.pause()。
如果我的视频是从 URL 流式传输的(就像网络摄像头一样)作为
<img src="http://ip_address/stream"> 标签,我不能使用 .play() 或 .pause() 功能。
我还能用吗:
canvas = document.getElementById('canvas');
var context = acontainer.getContext('2d');
context.drawImage(acontainer, 0, 0, width, height);
var data = acontainer.toDataURL('image/jpeg');
photo.setAttribute('src', data);
目标是在我单击时获取视频流的图片 - 所以我有一个执行上述操作的鼠标单击事件。
我该怎么做?
更多信息:此页面的 URL 为 http://ip_address,视频流的 URL 为 http://ip_address/stream。视频流是 <img> - 大量 jpeg 图像正在流式传输 - 在 <div> 容器内,例如
代码看起来像 -
<!DOCTYPE html>
<html>
<head>
...
<style>
...
</style>
</head>
<body>
<div id="container">
<img src=...>
</div>
<script>
container.addEventListener("click", function(element){}, false);
...
</script>
</body>
</html>
编辑:这个问题不是重复的,因为我不是在问如何流式传输到 html 画布。相反,我已经在容器中显示了一个流,我想为它拍照并将其显示在画布中 - 因此流和照片出现在同一页面上。
【问题讨论】:
-
将
<img>元素引用作为第一个参数传递给.drawImage()。为什么不使用<video>元素? -
"http://ip_address:port"资源是否与Access-Control-Allow-Origin标头一起提供? -
当我使用
<video src="http//:ip_address:port"></video>时出现错误。我正在通过网络摄像头进行直播,所以格式是<img>对吗?所以你说我应该有context.drawImage(img_ID, 0, 0, width, height); -
<video>元素有什么错误?是的,将<img>元素引用,而不是img元素的id传递给.drawImage()。虽然如果 CORS 标头没有与资源.drawImage()一起提供,也会抛出错误。 -
@Kaiido 不知道为什么您认为这个问题是链接问题的副本? OP 没有尝试流式传输到
canvas。 OP 正在尝试从流中捕获静止图像,或<img>元素的当前src,然后在click事件中从该捕获中创建静止图像。 fwiw,能够使用 Answer 中的方法从链接处的mpeg流中以data URI捕获静态图像,没有任何问题。
标签: javascript html image video