为您的视频增添氛围

注意:这篇文章最初发布在 silverorange 实验室博客 上,作者是 Mike Gauthier。Mike 和 silverorange 的其他人员为 35 天项目制作了这个演示,我们感谢他们。

另请注意,下面的演示非常占用 CPU。如果您对效果感兴趣,但 CPU 速度不快,可以观看效果的屏幕录制。

最后一点:此演示需要 Firefox 3.5 Beta99 或更高版本。如果您安装了 Beta 4,则可以使用“帮助” -> “检查更新...”获取最新 Beta 版本。Beta 4 中存在一个错误,导致无法将视频数据复制到画布。

我们在与 Mozilla 的合作中,对 Firefox 3.5 中新的 HTML5 功能可以实现的功能进行了一些实验。利用 <canvas> 和新的 HTML5 <video> 元素,我们创建了一个演示,该演示从正在播放的视频中提取颜色信息,并使用它来设置视频周围边框的样式。结果与最俗气的背光液晶电视非常相似。


在 Firefox 3.5 Beta99 或更高版本中查看演示


查看演示的屏幕录制(Ogg Theora,4.1MB)
查看演示的屏幕录制(mov,h.264,4.3MB)

工作原理

颜色计算是通过将视频帧绘制到 HTML5 canvas 元素,然后计算画布的平均颜色来完成的。为了加快平均颜色计算速度,视频帧会被重新采样到一个较小的画布上(此演示使用 50×50)。通过使用较大的画布,可以提高颜色精度,但会降低速度。将视频帧推送到画布上的操作如下所示

var canvas = document.getElementById('canvas');
var video = document.getElementById('video');
var context = canvas.getContext('2d');

// push frame to canvas
context.drawImage(video, 0, 0, canvas.width, canvas.height);

// get image data for color calculation
var data = context.getImageData(0, 0, canvas.width, canvas.height);

然后使用 YUI 动画随时间推移更改计算出的颜色。

视频边缘使用 SVG 蒙版进行羽化。Firefox 3.5 允许使用特殊的 CSS+SVG 属性将 SVG 蒙版应用于元素。首先,在文档中内联定义 SVG 蒙版(注意:也可以在外部定义)。然后,使用以下 CSS 规则将蒙版应用于 video 元素

#video {
    mask: url(index.html#m1);
}

FF3.5 中还有其他两个可用的 CSS+SVG 属性:clip-pathfilter。要在 CSS 中引用 SVG 样式,请使用 url(filename#element-id) 或仅使用 url(#element-id)(如果 SVG 在与 CSS 相同的文件中定义)。

最后,演示使用 Firefox 3.5 中的一些新的 HTML CSS 3.0 功能。使用了 box-shadow 属性、text-shadow 属性和 rgba 颜色模型

#main-feature {
    -moz-box-shadow: #000 0px 5px 50px;
}
#description {
    text-shadow: rgba(255, 255, 255, 0.4) 1px 1px 2px;
}

关于 Christopher Blizzard

一次发布,让网络变得更好。

更多 Christopher Blizzard 的文章…


10 条评论

  1. Anita

    非常感谢您添加了屏幕录制,这样我们这些尚未切换到 3.5 版本的用户也可以分享这次冒险。

    2009 年 6 月 9 日 上午 05:33

  2. […] 为您的视频增添一些氛围:https://hacks.mozilla.ac.cn/2009/06/add-ambiance-to-your-videos/ […]

    2009 年 6 月 9 日 上午 06:38

  3. Auren

    对我来说运行速度太慢了。可能是因为它是 Beta 版本。

    2009 年 6 月 9 日 下午 19:51

  4. […] 原文地址:add some ambiance to your videos […]

    2009 年 6 月 10 日 上午 00:24

  5. […] 为影片添点情调,我略译一下: […]

    2009 年 6 月 10 日 上午 11:16

  6. […] add some ambiance to your videos […]

    2009 年 6 月 11 日 上午 05:56

  7. Mike

    哇。我正在使用的夜间版本很棒!视频看起来有点卡顿,但我认为是视频本身的问题,几乎看不出来,但这可能是 JS 对页面的影响或其他什么原因。尽管如此,我认为环境变化只有在发生重大变化后才会出现,效果非常好。这是一个天才的想法。

    2009 年 6 月 11 日 上午 10:05

  8. J. McNair

    使用旧电脑的用户

    我正在一台旧的 Athlon 电脑上使用一个不错的显示器,在 1920 x 1080 分辨率下演示效果很卡顿。

    但是我使用 Ctrl - 稍微缩小了页面和视频帧,效果就流畅得像黄油一样。降低桌面分辨率也有帮助。

    因此我印象非常深刻。

    2009 年 6 月 16 日 下午 20:09

  9. […] 社交网络主导地位的世界地图 看起来 MySpace 并没有主导任何东西……Facebook 正在全球范围内使用……http://flowingdata.com/2009/06/08/world-map-of-social-network-dominance/ Firefox 3.5 可以实现的令人惊叹的新功能(全部原生,无需插件)内容感知图像大小调整 https://hacks.mozilla.ac.cn/2009/06/content-aware-image-resizing/ 眨眼检测 http://ajaxian.com/archives/finally-a-useful-blink-tag-detecting-your-user-blinking 浏览器内部的视频和蒙版,蒙版是使用 css 和 javascript 后续添加的:https://hacks.mozilla.ac.cn/2009/06/add-ambiance-to-your-videos/ […]

    2009 年 6 月 26 日 上午 00:23

  10. […] 原文地址:add some ambiance to your videos […]

    2009 年 7 月 7 日 下午 23:30

本文评论已关闭。