【问题标题】:Using canvas to grab pixel data from page使用画布从页面中抓取像素数据
【发布时间】:2011-01-11 23:29:29
【问题描述】:

如果我在页面上有 QT 视频(其中 QT 是无法更改的要求),我如何获取与画布一起显示的当前帧的像素数据?我知道getImage(videoElement, .....) 可以做到这一点,但我正在寻找使用 QT 的解决方案。

如果无法获取像素数据,是否可以使用画布截取页面并进行修剪?

或者我是不是走错了路,根本不需要使用画布?

【问题讨论】:

  • JavaScript 无法截屏。什么在使用服务器端(PHP、ASP.NET)?视频是否正在流式传输 - 如果是,流式传输服务器是什么?
  • 我意识到 JS 不能做到这一点,但我想也许有一种方法可以使用画布从页面中抓取像素,因为它已经可以为图像和视频元素做到这一点......服务器端我我正在使用 ASP.NET。我确实意识到一个可能的解决方案只是调用服务器来抓取框架,但我真的很想先调查所有选项。
  • 顺便说一句,QT 是必需的,因为它可以跟踪任何帧,而不仅仅是像 flash 这样的关键帧。

标签: javascript html image canvas quicktime


【解决方案1】:

Mozilla 上的这个例子:https://developer.mozilla.org/En/Manipulating_video_using_canvas 使用上下文对象上的getImageData() 函数在视频中进行色键替换。

【讨论】:

    【解决方案2】:

    这在画布上是不可能的。您所指的功能与画布无关,它与视频元素有关。 video 元素返回画布可以使用的图片,而 QT 对象(或嵌入)没有。

    【讨论】:

      【解决方案3】:

      另一个想法是对 quicktime 电影进行预处理,并将像素数据保存在您的服务器上。当您的页面需要时,Ajax 正确的框架数据。根据视频的压缩情况,这可能是个好主意,因为关键帧的存在可能很难为每一帧获取准确的像素数据。

      【讨论】:

      • 关键帧正是我不能使用 Flash 应用程序仅加载电影并直接在 Flash 中抓取帧的原因。 QT 不需要关键帧,你可以告诉它移动到一个精确的帧。不幸的是,由于服务器上的电影数量非常可笑,因此无法进行预处理。不是 youtube 可笑,但很接近。
      【解决方案4】:

      您可以依赖客户端上的 java 吗?如果是这样,您可以使用屏幕外 java 小程序(使用 java 库的 quicktime)与 javascript 和您的 quicktime 插件进行对话,以获取给定帧的像素数据。此解决方案需要将电影加载到 quicktime 插件和小程序中。请参阅http://processing.org/reference/libraries/video/index.html 以获取简化的 api。

      这不是一个优雅的解决方案。我不喜欢它。只是头脑风暴。

      【讨论】:

      • 很遗憾不能使用 java 小程序。如果可能的话,可以使用闪光灯。
      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多