写点什么

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

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

关注

评论 1 条评论

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

云行|乘云而上,“赣”劲十足,天翼云4.0暨赣州算力集群落成!

天翼云开发者社区

云计算 云服务

鲲山科技:引入和鲸 ModelWhale,实现量化策略的高效迭代

ModelWhale

数据科学 量化策略 量化分析

文心一言 VS 讯飞星火 VS chatgpt (112)-- 算法导论10.2 3题

福大大架构师每日一题

福大大架构师每日一题

与领航者共话湖仓, StarRocks Summit 2023 技术专场分论坛剧透来了!

StarRocks

StarRocks 湖仓 新范式

PPT制作软件哪个好?各种类型的10款好用PPT软件盘点!

彭宏豪95

效率 PPT PPT模板 办公软件 效率办公

Cloud Kernel SIG 月度动态:发布多个 ANCK 版本,引入多个第三方硬件驱动

OpenAnolis小助手

Linux 龙蜥社区 anck kernel 龙蜥sig

高规格、高并发、即开即用:和鲸携手北中医,打造 AI 人才选拔的最佳实践

ModelWhale

人工智能 大数据 高等教育 人才选拔 实践考核

低代码:避免重复造轮子的高效工具

互联网工科生

低代码 造轮子 JNPF

香港CN2服务器购买与部署全攻略,如何提速你的业务?

一只扑棱蛾子

香港服务器 CN2服务器

金句频出!天翼云中国行·赣州站,大咖有话说!

天翼云开发者社区

云计算

企业数字化转型的必选项:集成自动化

RestCloud

APPlink

No qualifying bean of type

0x5d0de9

java spring-boot

一个“旷世“难题:IT团队的绩效要不要跟企业经营结果挂钩

凌晞

团队管理 高绩效团队

下载安装Ipa Guard

业财融合潮流下,构建国有企业全面预算管理体系

智达方通

业财融合 全面预算管理

Java和Python对比,看完这篇你就知道有什么不同了

树上有只程序猿

Python java

PostgreSQL 16正式发布 HashData贡献中国智慧

酷克数据HashData

CODING 界面全新升级,代码仓库 Rebase 变基合并、批量复制事项等功能上线!

CODING DevOps

基于 EventBridge 轻松搭建消息集成应用

阿里巴巴云原生

阿里云 云原生 EventBridge

1000字扫盲RTC

X2Rtc

开源 音视频 CDN RTC

沐浴阳光,贴心陪伴,全屋智能大模型应用论坛即将发布小度全屋智能新产品

新消费日报

智慧公厕厂家为城市智慧化建设提供城市卫生升级的力量

光明源智慧厕所

智慧厕所 智慧公厕 厕所改造 公厕改造

Apache Doris 2.0.2 版本正式发布!

SelectDB

数据库 大数据 数据仓库 实时数仓 apache doris

以科技力量引领医疗数字化转型,英特尔携手中移动成研院打造边缘融合算力网络解决方案

E科讯

GraphQL 查询使用指南:语法示例和最佳实践

Apifox

最佳实践 前端 后端 API graphql

MetaGPT( The Multi-Agent Framework):颠覆AI开发的革命性多智能体元编程框架

汀丶人工智能

人工智能 深度强化学习 大语言模型 多智能体

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