写点什么

Video Renderer:高性能移动 Web 端视频编辑器

  • 2019-09-05
  • 本文字数:990 字

    阅读完需:约 3 分钟

Video Renderer:高性能移动Web端视频编辑器

Video Renderer是一款针对移动 Web 应用开发的高性能视频编辑器。在 2019 伦敦全栈工程师大会(Fullstack London 2019 conference)上,Threads Styling公司的软件开发工程师Forbes Lindesay分享了 Video Renderer 的开发经验。


Canvas API支持在浏览器内编辑视频,但通常用于编辑静态图像。Canvas API 特别适合在画布内渲染单个视频帧甚至是整个视频。


下面给出的代码示例来自“video + canvas = magic”:


function draw(v,c,w,h) {    if(v.paused || v.ended) return false;    c.drawImage(v,0,0,w,h);    setTimeout(draw,20,v,c,w,h);}
复制代码


代码中定义的函数以 HTML 视频元素、Canvas 元素、当前帧的宽度和高度为输入,调用drawImage将视频当前栈复制到 Canvas 元素中,进而调用 setTimeout 设置 20 毫秒超时,形成 50 fps 的流畅视频。


图像一旦复制到 Canvas 中,就可以读取并编辑单个帧。这时,每个帧可视为静态的图像,进而可直接使用 Github 上提供的多种 Canvas 图像操作软件库。


编辑器设计提供的另一项功能是分层(Layering)。对于堆栈,在当前视频之上入栈另一个视频非常易于实现,但绘图和动画的入栈并非易事。这是因为绘图和动画通常含有透明属性,该属性不支持开箱即用。


为解决上述问题,最简单的做法是在服务器添加一步额外的操作。一旦用户上载图像,就创建该图像的黑白拷贝。其中,白色表示图像中的可见部分,黑色表示图像中的透明区域。进而,编辑器使用一种“透明指引机制”,判断图像中应绘制的区域,然后剩余的区域渲染背景视频。


为在服务器端创建上述“透明指引机制”,编辑器设计上使用了FFmpeg软件库提供的 FilterComplex 方法。FFmpeg 支持创建图像过滤器。


需指出的是,在浏览器中构建视频编辑器存在一个局限。尽管视频编辑功能在浏览器中运行得非常好,但是不推荐对压缩视频使用,尤其是在移动端。为解决这一局限,编辑器将复制服务器端编辑的视频,进而使用 FFmpeg 生成并压缩视频。为此,在向服务器发送原始视频的同时,会发送可重现用户已完成编辑操作的一系列指令。


这是一种临时的解决方案。未来,编辑器将考虑使用WebAssembly在浏览器中编译并运行 FFmpeg。事实上,对此Github上已有实验性项目,但是该项目尚未达到可适用于生产环境。


上面介绍了 Threads Styling 移动端视频编辑器的关键技术。该编辑器以 MIT 许可方式提供在Github上。


原文链接:


High Performance Video Editing for the Mobile Web


2019-09-05 08:008366
用户头像

发布了 391 篇内容, 共 157.4 次阅读, 收获喜欢 257 次。

关注

评论 1 条评论

发布
用户头像
赞,最近正好在研究这个
2020-02-23 16:25
回复
没有更多了
发现更多内容

Auditing相关注解

Damon

7月月更

喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位

3DCAT实时渲染

5G

一周活动速递|深入浅出第8期;Meetup成都站报名进行中

OceanBase 数据库

从业务需求出发,开启IDC高效运维之路

鲸品堂

IDC

柏睿数据加入阿里云PolarDB开源数据库社区

阿里云数据库开源

开源数据库 polarDB PolarDB-X 阿里云数据库 PolarDB for PostgreSQL

7.依赖注入

MASA技术团队

后端

RTC 性能自动化工具在内存优化场景下的实践

字节跳动视频云技术团队

性能优化 RTC 内存优化

越来越成熟的Rust,都应用了哪些场景呢?

非凸科技

rust

云VR:虚拟现实专业化的下一步

3DCAT实时渲染

Cloud XR

为什么数字化未来取决于3D实时渲染

3DCAT实时渲染

实时云渲染

Rainbond插件扩展:基于Mysql-Exporter监控Mysql

北京好雨科技有限公司

云原生 #Kubernetes#

如何选择数字孪生可视化平台

3DCAT实时渲染

数字孪生

云流化和云桌面有什么关系

3DCAT实时渲染

大型仿人机器人的技术难点和应用情况

优必选科技

机器人

博云容器云、DevOps平台斩获可信云“技术最佳实践奖”

BoCloud博云

容器 DevOps 云原生 容器云

更新|3DCAT实时云渲染 v2.1.2版本全新发布

3DCAT实时渲染

实时云渲染有哪些优势

3DCAT实时渲染

实时云渲染

如何创建一个有效的帮助文档?

Geek_da0866

算法题每日一练---第9天:第几个幸运数字

知心宝贝

算法 前端 后端 7月月更

免费的低代码开发平台有哪些?

优秀

低代码 低代码开发平台

多租户软件开发架构

力软低代码开发平台

阿里架构师花近三个月时间整理出来的Java独家面试题(Java岗)

程序员啊叶

Java 编程 程序员 架构 java面试

3DCAT v2.1.3新版本发布,这三大功能更新你不容错过!

3DCAT实时渲染

Cloud XR面临的问题以及Cloud XR主要应用场景

3DCAT实时渲染

关于云XR介绍,以及5G时代云化XR的发展机遇

3DCAT实时渲染

XR 云XR

「行话」| 用DevOps高效交付游戏,是种什么体验?

极狐GitLab

git DevOps gitlab 敏捷开发 游戏开发

国际权威认可!OceanBase入选Forrester Translytical数据平台报告

OceanBase 数据库

oceanbase

城市燃气安全再拉警钟,如何防患于未“燃”?

AIRIOT

物联网 天然气管理平台 燃气安全

Go语言系列:Go从哪里来,Go将去哪里?

小黑豆豆

后端 阅读 Go 语言 7月月更

8 年产品经验,我总结了这些持续高效研发实践经验 · 研发篇

尔达Erda

产品 程序员 云原生 研发 效能

Video Renderer:高性能移动Web端视频编辑器_大前端_Guy Nesher_InfoQ精选文章