开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

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

关注

评论 1 条评论

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

国产化替代进程中金融行业的中间件

Onegun

信创 国产化

IPQ5018 vs. IPQ5010 How to choose for Router and Mesh Applications?

wallyslilly

ipq5018

百度沈抖:智能,生成无限可能

百度Geek说

AI 百度智能云 企业号 4 月 PK 榜

大模型Chatbots评估新视角:结合定性与程序方法的实践探索

百度开发者中心

人工智能 大模型

代码评审-findBugs

追随月光的战士

代码质量 githook findbugs

重回铁王座!时隔5年!Quill 2.0 终于发布啦🎉

Kagol

前端 富文本编辑器

详解数仓的向量化执行引擎

华为云开发者联盟

数据库 华为云 华为云开发者联盟 华为云GaussDB(DWS) 企业号2024年4月PK榜

OpenHarmony NAPI开发 主讲人:连志安

Laval小助手

后端的克星,前端的福音 -快捷提供数据库的REST数据访问接口

zhumingwu

智慧医院解决方案

菜根老谭

智慧医院

物资管理的挑战与机遇:利用技术提升效率与可持续性

天津汇柏科技有限公司

Appium控件交互策略:优化自动化测试效率的关键方法

霍格沃兹测试开发学社

如何延长LED显示屏的使用寿命

Dylan

环境 角色 LED显示屏 全彩LED显示屏 led显示屏厂家

大模型下B端前端代码辅助生成的思考与实践 | 得物技术

得物技术

JavaScript AI web前端 ChatGPT 企业号 4 月 PK 榜

魔搭×函数计算:实现大模型快速部署,加速AI应用落地

百度开发者中心

人工智能 大模型

凭证管理揭秘:Cookie-Session 与 JWT 方案的对决

Phoenix

安全架构 会话管理

捷途山海T2携手坦克300 Hi4-T上市,消费者该如何选择?

Geek_2d6073

企业为什么需要MES,万界星空科技MES系统的解决方案

万界星空科技

数字化转型 工业互联网 制造业 mes 万界星空科技

一次故障演练,十分钟自动搞定?

华为云开发者联盟

运维 华为云 企业号2024年4月PK榜 华为云开发和联盟

联想用万全智算,画出中国AI的山脊

脑极体

AI

Linux设备驱动系列(四)——设备号

Linux内核拾遗

linux开发 Linux内核 设备驱动

一文了解AI长文本工具:马斯克打脸OpenAI,全球最大巨无霸模型Grok-1开源!

蓉蓉

openai

搭载联想小天个人智能体的AI PC亮相 PC从此变CP

科技热闻

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