写点什么

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:007589
用户头像

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

关注

评论 1 条评论

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

轻松搞定工作汇报ppt!这3款AI软件值得拥有

彭宏豪95

效率工具 职场 办公软件 AIGC AI生成PPT

[Mac/win永久激活版] Studio One 6中文版下载 Studio One 6许可证分享

Rose

SD-WAN组网技术的九大应用场景

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

我的 Electron 客户端被第三方页面入侵了

我再BUG界嘎嘎乱杀

黑客 网络安全 安全 Electron 网安

【YashanDB知识库】自关联外键插入数据时报错:YAS-02033 foreign key constraint violated parent key not found

YashanDB

yashandb 崖山数据库 崖山DB

【YashanDB知识库】ycm托管数据库时报错OM host ip:127.0.0.1 is not support join to YCM

YashanDB

yashandb 崖山数据库 崖山DB

打印报表--标签打印报表

小智数据

自定义打印控件 小智开源报表控件 纯前端js报表控件 类excel样式报表 标签打印报表

打印报表--自由打印报表

小智数据

小智报表打印 小智开源报表 小智报表常见示例 纯前端js报表控件

腾讯云联合中科软发布 “保险行业一体化大数据解决方案” 共筑保司数据基座

腾讯云大数据

腾讯云 wedata

一文弄懂Go语言的Context包,值得收藏!

左诗右码

Go

写在万粉千文的黎明前

FunTester

PostgreSQL的数据实时迁移到SelectDB

NineData

postgresql 复制 迁移 SelectDB ddl

最佳实践:基于腾讯云 ES 的机器学习功能,实现一站式 NLP 语义聚合

腾讯云大数据

ES

如何确保 API 接口的稳定性和可靠性

Noah

Lightroom Classic 2023(lr2023)中文破解版 v12.4版本 支持Mac15系统 支持M1/M2

Rose

加密市场“黑色星期一”:多重因素引发暴跌,后市如何演绎?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Maxon Cinema 4D Studio R21破解版安装教程 (C4D R21中文版下载)

Rose

DNA序列分析软件 SnapGene 5破解版含SnapGene5激活工具 mac/win

Rose

一键登录,打造华为账号便捷新体验

HarmonyOS SDK

HarmonyOS

打印报表--分片重复报表

小智数据

小智报表打印 小智开源报表 小智报表常见示例 纯前端js报表控件 类excel样式报表

淘宝商品详情API深度解读:商品标签与分类的洞察

代码忍者

API API 文档 API 测试

Web3 游戏周报(7.28 - 8.03)

Footprint Analytics

链游

JeecgBoot 如何集成 Spring AI

JEECG低代码

苹果电脑菜单栏日历工具 万年历 for mac- 日历以及天气预报工具

Rose

NFTScan | 07.29~08.04 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan

尤利西斯Ulysses for Mac 中文直装版 优秀的markdown写作软件 原创 白衣衫 1分钟前 编辑

Rose

打印报表--客户订单打印报表

小智数据

小智开源报表 小智报表常见示例 纯前端js报表控件 类excel样式报表 客户订单打印报表

华为云全域Serverless技术创新:全球首创通用Serverless平台被ACM SIGCOMM录用

华为云PaaS服务小智

云计算 Serverless 华为云

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