使用HTML5构建Vyclone的社交视频编辑体验

由于开发人员充分发掘了 HTML5 的潜力,对于消费者来说,Web 不仅变得更具吸引力,而且提高了工作效率。在本篇客座博文中,Plain Concepts 的 Anton Molleda 将介绍他在开发 Vcylone 时的切身感受和经验教训,Vcylone 是一种基于 HTML5 和下一代浏览器(如 Internet Explorer 10)中的许多新功能而构建的社交视频编辑体验。Vcyclone 依托于指针事件、多点触控手势、硬件加速的画布和 CSS3 等技术而构建,这使该网站感觉更像是一个应用。

— Internet Explorer 小组项目经理 Rob Mauceri

大家好,

我叫 Anton Molleda,在 Plain Concepts 工作。在最近的几个月中,Internet Explorer 团队一直在不断与社交视频新创平台 Vyclone 的杰出的工作人员共同协作。作为 Web 开发人员,能够有机会推动 Web 的发展是一件令人非常激动的事情。幸运的是,我有幸能够为这一项目伸出援助之手。今天,我希望与您分享一下在我们使用 HTML5 和 JavaScript 为 Vyclone 创建 Web 视频编辑器时所积累的一些重要经验!

Vyclone 是一个社交视频平台,它允许您在共享时共同创建、同步和编辑多个视图,而毫不费力。

在开始开发 Vyclone 时,它仅专注于移动设备。但是,我们很快就意识到在能够使用手机获得出色的录制体验的同时,编辑视频会受到屏幕尺寸和设备功能的限制。在最近几年里,由于现代浏览器取得了长足的进步,HTML5 已成为打造这一新工具的可行途径。

Vyclone 的 Web 编辑器的核心由以下三部分组成:

视频预览:允许观看用户正创建的低质量剪切视频(在左侧)

视频网格:向用户显示所有可用视频源,同时显示特定时间点的内容(在右侧)

时间线:表明正在播放的视频源的过程的线性视图。在某段时间内播放的视频源称为剪切视频(显示于播放器控件上方)

当用户播放视频并开始向时间线中添加新的剪切视频时,视频预览将进行切换以反映新的源,而视频网格将使用三角角标突出显示源文件,以便用户可以识别选定的视频。

在构建该工具的过程中,我们遇到了巨量的视频操作、性能恢复和用户体验等方面的非常有趣的挑战。让我们来深入了解一下我们是如何在 Web 上实现这一功能的。因此,我们使用了视频、画布和 requestAnimationFrame (RAF)。我们在后台播放一个视频,并在每个 RAF 中将活动的源提取到画布(在视频预览中),或者计算视频的新尺寸并定位到视频网格中。

到目前为止一切顺利,但当我们让用户与其交互时情况又如何呢?例如,当用户前后移动时间线,或者添加/删除视频源(剪切视频)时的情况如何?当我们首次制作原型时,我们认为标准方法是一旦触发事件,即开始对该事件进行关注 - 因为这是我们所了解到的方法,对吗?

但当这些事件每秒钟触发几十次,甚至几百次时,将会发生什么情况呢?另外,如果处理程序需要更新 UI 怎么办?我们真要在有时增量变化小于 1 个像素时强制布局每秒钟刷新 130 次吗?这将大幅降低性能!

如果您的计算机拥有 i7 和 8GB 的 RAM,那么或许可以承担这样的计算能力。但是,使用较旧设备的用户怎么办?或者使用 ARM 设备的用户怎么办?这些用户将无法获得相同的体验,并且会看到网站的响应时间会逐渐慢下来。

我们的首要方法是在 RAF 中将操作加入队列,但此方法存在一些问题,例如,您可能会在 RAF 中加入同一 "tick" 的相同函数,这会让事情变得更加糟糕。为了解决这一问题,我们需要在首要方法中引入一个变量,以告诉我们是否操作已经加入队列。具体如下:

var queued = false; function myAction(){ //your awesome code here queued = false; } function onEvent(evt){ if(!queued){ queued = true; requestAnimationFrame(myAction); } }

该代码非常不错,但仍然有缺陷。如果您正在进行与事件位置(鼠标或指针)和增量有关的操作,那么该方法可能会使您感到非常纠结。我们在时间线中使用的解决方案是累积事件值并在 myAction 上进行处理:

var deltaX = 0, queued = false; function myAction(){ //your awesome code here uses deltaX deltaX = 0; // we reset the deltaX so it can be incremented // next time onEvent is executed queued = false; } function onEvent(evt){ if(!queued){ queued = true; deltaX = evt.translationX; // in the case of a pointer, if you are // using a mouse you will have to do some // magic with pageX or similar :) requestAnimationFrame(myAction); }else{ deltaX += evt.translationX; } }

借助该方法,您应该几乎已经准备就绪了。我们不断添加新的功能,随后注意到一些新的问题又出现了。

通过在适当的时候处理每个 requestAnimationFrame 中的这些事件,我们可以获得更高的响应速度,而不会影响计算能力。但是,由于 requestAnimationFrame 按顺序执行函数,它们会被加入队列,因此有时我们要在清除之前进行提取,或者在不必要的时候移动时间线,而我们不得不创建大量的复杂代码来确保函数按照我们需要的顺利来执行。

我们看到该代码并不是非常友好,并且我们要丢失一些周期,等待执行其他操作,因此我们决定再次改变我们处理输入的方式。此时,我们认为这是一种游戏循环。如果您不熟悉(简单)游戏体系结构,游戏循环基本上是一个连续的循环,可在不考虑用户交互的情况下执行,并在发生不同的事件和操作时进行拆分。从 Wikipedia 文章“游戏编程”,使用伪代码的简化游戏循环类似于如下所示:

while( user doesn't exit ) check for user input run AI move enemies resolve collisions draw graphics play sounds end while

这正是我们所需要的。通过利用 RAF,我们创建了连续执行的 tick 函数,并且在此 tick 函数中,我们根据先前的用户输入或其他因素决定我们必须做些什么。

视频网格的简化 tick 具体如下:

function tick(){ //we clean if we've changed the size of the quadrant if(needsClean){ cleanCanvas(); } // if we have to change the quadrant's frame because we are // the active one (or the opposite) if(newFrame){ drawFrame(); // we draw just the frame in a separate canvas so it // doesn't need to be calculated all the time, and it // is still faster than copying from an image } //we draw the new frame if we are playing or seeking if(dirty){ draw(); drawFrameInQuadrant(); } requestAnimationFrame(tick); }

needsClean、newFrame 和 dirty 等值将在事件处理程序中进行更新(如用户搜寻内容或播放视频等情况)。

正是这一点改变了我们关于用户交互的思维方式,继而转向了游戏循环,使我们改进了性能并简化了我们编辑器中的代码。

如果您正在构建一些需要高交互性,并会收到大量用户输入的内容,请考虑一下使用游戏循环如何可以简化您的生活,并使您大受裨益!对于我们,情况的确如此。如果您还没有机会了解 Vyclone 的全新 Web 编辑器(如果我不这样说自己),请立即开始行动!在 Vyclone.com 中,单击任意视频上的“Remix”,您即会看到 Web 编辑器。使用鼠标或触控输入也可以获得同样好的效果。我强烈建议您立即使用 Surface Pro 进行体验!

希望您喜欢!如有疑问,可通过在下方评论的方式与我联系!

— Anton Molleda, Plain Concepts

时间: 2024-10-26 01:40:27

使用HTML5构建Vyclone的社交视频编辑体验的相关文章

基于云端的交互视频编辑和发布平台:FlixMaster

近日,FlixMaster是Fortune Brainstorm: Tech大会上发布的一款免费增值服务.它是一个基于云端的视频编辑和发布平台,用户可以自己制作动态的交互式视频,将故事娓娓道来,对用户来说是一项非常新颖的体验. FlixMaster系统提供了一种简单.直观可见的视频制作模式.它应用HTML5和强大的分析技术,提供拖拽式编辑器,为用户打开了一扇自主制作精彩视频的大门,使用户能够真正互动起来,而不只是傻傻看着屏幕. 最近,美国网络公司(USA Networks)慧眼相中FlixMas

苹果社交视频创作应用 Clips 上架 App Store

苹果今天宣布,公司全新社交视频创作应用 Clips 将于今天登陆 App Store.Clips 全新登场.这款 iOS app 可以让你利用文字.特效和图像等多种方式,随手制作.分享趣味视频.Clips 支持 即时字幕功能,可以让你轻松创建动态字幕,你要做的,只是按住录制键说话就行. 你还可以选择各种不同的字幕风格,它们会跟随你说话的节奏同步出现在画面上.Clips 还支持视频滤镜:放个表情符号:加个对话气泡.箭头这样的叠层:或者配段音乐来营造点气氛,它会根据视频自动调整长度.Clips 能够

基于DirectShow/DES的MPEG-2音视频编辑软件的实现方案

引言 1994年欧洲制定的数字视频广播(DVB)标准和1996年美国联邦通信委员会(FCC)的先进电视制式委员会(ATSC)地面广播电视标准,在视频部分都采用了MPEG-2 标准.我国的CATV 数字网,也采用DVB 标准.MPEG-2 标准的出现,大大推动了数字视频业务的发展.越来越多的节目交换是以MPEG-2压缩方式进行的,使演播室制作涉及大量对MPEG编码压缩节目的处理,如非线性编辑涉及的不同节目间的切换.剪切和串编.在画面上加字幕.台标.实现淡入淡出等.其中节目剪切和串编是实现其他编辑功

MixBit能够为用户提供短视频编辑和再创作的平台

硅谷网讯 据国外媒体报道,赫利和陈士俊创办的视频分享网站MixBit今日 终于上线了,同时推出的还有iOS客户端.MixBit能够为用户提供短视频(16秒长)编辑和再创作的平台,而且创作者无需担心版权诉讼问题. 著名视频网站YouTube创始人查德·赫利(Chad Hurley)和陈士骏(Steve Chen)近日对外界宣布了他们最新的创业项目:社交视频分享网站--MixBit. MixBit的特点和Vine.Instagram视频有相似之处,允许用户上传一段16秒钟的短视频.据<纽约时报>报

社交视频分享网站Viddy开放API

[搜狐IT消息]北京时间7月31日消息,今天社交视频共享站点Viddy宣布开发API.这将允许开发者 围绕Viddy平台进行开发,并利用新方式进行视频分享.Viddy宣布开发APIViddy已经在官方博客中发帖,向开发者 提出挑战,有极酷创意的开发者可以获得1万美元:"在8月和9月,我们会和你以及我们的开发者一起工作,将你们开发的应用在 4000万用户的Viddy社区进行推广.9月28日星期五Viddy团队将选出最中意的API合作伙伴,飞赴Viddy总部进行采访,并颁发1万美元现金奖金.&quo

Twitter宣布已收购实时云社交视频发布与分发初创企业SnappyTV

Twitter刚刚在博客上宣布已收购实时云社交视频发布与分发初创企业SnappyTV,但具体交易金额并未透露. SnappyTV是一家提供实时视频剪辑.编辑与分发的初创企业,成立于2010年.该平台能够为电视直播创造第2 屏幕的体验.用户在观看电视直播的同时,可以通过PC或移动终端进入该平台直接截取直播片段,然后在数秒钟之内发送给 Facebook 或者 Twitter 上的朋友和其一起分享评论精彩瞬间.其客户包括Fox.The CW及Nascar等. Twitter在公告中说,跟踪事件的最好方

Twitter收购实时云社交视频发布与分发初创企业SnappyTV

Twitter刚刚在博客上宣布已收购实时云社交视频发布与分发初创企业SnappyTV,但具体交易金额并未透露. SnappyTV是一家提供实时视频剪辑.编辑与分发的初创企业,成立于2010年.该平台能够为电视直播创造第2 屏幕的体验.用户在观看电视直播的同时,可以通过PC或移动终端进入该平台直接截取直播片段,然后在数秒钟之内发送给 Facebook 或者 Twitter 上的朋友和其一起分享评论精彩瞬间.其客户包括Fox.The CW及Nascar等. Twitter在公告中说,跟踪事件的最好方

Twitter收购实时云社交视频发布平台SnappyTV

摘要: Twitter刚刚在博客上宣布已收购实时云社交视频发布与分发初创企业SnappyTV,但具体交易金额并未透露. SnappyTV是一家提供实时视频剪辑.编辑与分发的初创企业,成立于2010年.该平台能 Twitter刚刚在博客上宣布已收购实时云社交视频发布与分发初创企业SnappyTV,但具体交易金额并未透露. SnappyTV是一家提供实时视频剪辑.编辑与分发的初创企业,成立于2010年.该平台能够为电视直播创造第2 屏幕的体验.用户在观看电视直播的同时,可以通过PC或移动终端进入该平

狸窝全能视频转换器怎么视频编辑

  1:这样需要想把你想要编辑视频添加进来.才能使用这个"视频编辑"功能 2:点击进入,这里是自动播放的.你可以点击暂停的.这里小编给大家介绍两个主要常用的功能. 截取:看到开始时间跟结束时间.这里需要手动的添加就让.上面的视频右下角有个时间的显示,根据这个时间,输入你需要的时间. 3:还有一个功能:水印 打勾"添加水印".这里选择文字水印.比如"下载吧"选择好位置.大小,你就可以看到输出视图上有添加的水印.如果一切选择好了,记得点击"