使用Canvas从页面中获取像素数据

3
如果我在页面上有一个QT视频(其中QT是无法更改的要求),如何使用画布获取正在显示的当前帧的像素数据?我知道可以使用getImage(videoElement, .....)实现此目的,但我正在寻找一种使用QT的解决方案。
如果无法获取像素数据,则是否可能使用画布拍摄页面截图并进行修剪?
或者我走了错误的路,根本不需要使用画布吗?

JavaScript 无法截屏。您是否使用服务器端(PHP、ASP.NET)?视频是否正在流式传输 - 如果是,那么流媒体服务器是什么? - Todd Moses
我知道JS不能做到这一点,但我想也许有一种方法可以使用canvas从页面中获取像素,因为它已经可以对图像和视频元素进行操作了...服务器端我正在使用ASP.NET。我确实意识到一个可能的解决方案就是调用服务器来获取帧,但我真的很想先探索所有选项。 - Darko
顺便提一下,QT是必需的,因为它可以跟踪到任何帧,而不仅仅是像Flash那样的关键帧。 - Darko
4个回答

1

你能相信客户端上有Java吗?如果可以的话,你可以使用一个离屏Java小程序(使用QuickTime for Java库)与JavaScript和QuickTime插件进行通信,以获取给定帧的像素数据。这个解决方案需要将电影加载到QuickTime插件和小程序中。请参考http://processing.org/reference/libraries/video/index.html了解简化的API。

这不是一个优雅的解决方案。我不喜欢它。只是一些构思。


不幸的是,无法使用Java小程序。但如果可能的话,可以使用Flash。 - Darko

1

使用canvas是不可能的。你所提到的函数与canvas无关,它与视频元素有关。视频元素返回一张图片,canvas可以使用,而QT对象(或嵌入)则不行。


0
另一个想法是预处理QuickTime电影,并在您的服务器上保留像素数据。当您的页面需要时,通过Ajax获取正确帧的数据。根据您的视频压缩情况,这可能是一个好主意,因为由于关键帧的存在,获取每个帧的准确像素数据可能会很困难。

关键帧正是我不能使用Flash应用程序直接加载电影并在Flash中抓取帧的原因。QT不需要关键帧,您只需告诉它移动到确切的帧即可。不幸的是,由于服务器上的电影数量太多,无法进行预处理。虽然不至于像YouTube那样荒谬,但也相当接近。 - Darko

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接