前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​如何实现简单高效的移动剪辑框架

​如何实现简单高效的移动剪辑框架

作者头像
LiveVideoStack
发布2019-08-06 14:32:38
1.4K0
发布2019-08-06 14:32:38
举报
文章被收录于专栏:音视频技术音视频技术

本文整理自LiveVideoStack线上分享第三季,第八期的分享内容。随着互联网和智能设备的普及,之前需要大量专业人士和设备才能完成的视频内容创作与剪辑过程在移动平台的实现也逐渐成为可能,360视频云部门经理,耿显东老师将结合360视频云的实践介绍如何实现高效的移动剪辑框架与性能优化。

文/耿显东

整理/LiveVideoStack

直播回放

https://www2.tutormeetplus.com/v2/render/playback?mode=playback&token=1b6ec621bb7b43e3be108dd50a47e57b

大家好,我是来自360视频云的耿显东,本次分享的主要内容是360视频云在视频剪辑中的一些实践,希望能给大家带来一些启发。

本次分享的内容分为四个部分,首先是一个Overview,第二部分介绍剪辑工具与概念,第三部分会介绍一些关键技术,最后是360视频云的延伸和展望。

1. Overview

1.1 剪辑的历史回顾

剪辑最初来源于法语Montage,中文名叫蒙太奇,上图中最左边是大卫·格里菲斯(D.W. Griffith),他是最早开始使用蒙太奇手法拍电影的导演。右边三个都是苏联时期的学者,他们把蒙太奇整合成一套理论,变成一门学科。

1.2 库勒雪夫效应

上图中的六张图片分为三组,是当同一面部表情的画面,配以不同的画面,就能产生不同的情感效果,让观众以不同的方式解读人物的情绪,即使面部表情保持不变,这就是库勒雪夫效应。

1.3 常见的剪辑手法

目前被大众普遍接受的剪辑是短视频,其实在专业领域,包括电影后期制作、电视剧的拍摄都有很多专业工作人员去做专业的剪辑,针对不同的场景运用不同的剪辑手法,场景包括猎奇、新闻、炫酷、剧本和讲故事等,剪辑手法的分类如上图所示。

1.4 滤镜效果展示

上图展示了同一张图片加不同滤镜的效果。

2. 剪辑工具与概念

2.1 剪辑工具

专业领域的工作者可能对传统的收费软件比较熟悉,比如Adobe Premiere、Final Cut Pro和Adobe After Effects等,这些软件在PC平台使用,需要一定的技术门槛,对设备配置也比较高。由于目前手机智能终端处理能力逐渐增强,移动平台剪辑工具APP也慢慢普及,例如VideoLeap、VUE和InShot等,剪辑工具的整体发展趋势是从PC转到移动平台,对使用工具的专业性要求降低。完成这样的趋势转变的标准总结下来便是快速、酷炫、简单。

2.2 内容创作流程和设备能力需求

视频内容创作流程复杂,对专业性和设备能力都有巨大挑战。上图左边列出了视频创作剪辑所需的技术栈,移动设备不如PC存储和计算能力强,同时还要考虑功耗的问题。

2.3 剪辑的概念

目前的剪辑都相当于是离线制作的过程,将所有的素材摆在时间轴上,在时间轴上可以分为不同的Track,调整每个素材接入和出去的位置,同一个Track上又分为音频和视频,同时在素材、时间轴和Track上都可以加一些效果,两段素材间还可以添加转场特效,这些是剪辑当中最基础的概念。

2.4 剪辑处理逻辑流程

对应每个Track上的素材而言,首先要对Clip进行解码,之后要对素材进行空间布局和特效,这些操作都是针对每一帧来做的。不同的Clip之间可以做一个叠加,实现画中画或贴纸的效果。所有的剪辑特效分为素材级别、Track级别和时间轴级别,一层层处理完之后再去渲染存成输出的文件。音频和视频相比少了空间效果,仅仅只是时间上的效果,在音频之间可以做环音,层次也分为素材级别、Track级别和时间轴级别。

3. 关键技术

3.1 关键技术介绍大纲

音视频剪辑关键技术分为了四个部分展开,分别是静态结构、动态流程、性能优化和兼容问题。

3.2 静态结构

360视频云的剪辑实际上是做了一个SDK给公司计算生态的所有业务调用,但实质我们没有涉及UI内层,所以这里只提供API的接口。做一个稳定的SDK一定要做崩溃收集和日志收集,以此帮助提高SDK稳定性和诊断问题。上图中中间层为描述管理器,管理所有素材、效果以及属性、草稿,主控器负责控制主体流程,监控器负责监控CPU/内存/GPU资源的监控。下半部分是中层管理器的延伸,主要特点是根据视频生成预览缩略图和根据音频生成音频波形图,渲染效果也是针对每一帧来操作,最终合成得到实时预览和最终导出文件。实时预览对速度要求不高,但最终导出文件的等待时间应该尽量缩短,提高用户使用体验。

剪裁、转场、变速和顺序调整都会带来时间上的变化,因此在管理时用分层来应对这种变化。首先明确所有的效果属性是加在素材级别、Track级别,还是时间轴级别上,这样在每帧渲染时不会对整体造成影响。

画面的空间布局类似Web开发中的CSS布局,通过类似CSS的方式来定义每个元素的属性,比如宽高利用百分比来达到自适应的效果,渲染方式和填充方式也是根据显示场景做不同的调试,Z轴完全借鉴CSS的布局来管理。

3.3 动态流程

媒体处理的Pipeline大致分为IO线程、解码线程、媒体处理线程和编码线程四大块,IO线程主要负责读文件和解复用,解码线程负责视频解码和音频解码,媒体处理大部分是在GPU上完成,最后编码合成。整个流水线的队列上游产生数据,下游消费数据,通过限制队列长度来控制内存使用,在某个环节出现处理性能瓶颈的话,队列的满状态就会传递到上游。

3.4 性能优化

性能优化第一部分是低分辨率预览,在预览和缩略服务中,尺寸达不到合成输出画布尺寸,因此在缩略图和预览中的尺寸不同,以保证视频处理速度跟上预览速度,这主要对“大分辨率+低端机”的性能带来挑战。

预览时用户会有对进度条的拖动操作,普通的播放器操作是跳到最近的关键帧,但剪辑中的素材大多是短视频,关键帧很少,使得在拖动过程中画面不连贯。因此需要做一个帧级别的Seek,但Seek所带来的问题是解码时必须从关键帧解,耗时比较长。所以我们采取在Seek时可以有选择的进行解码前丢帧,整体时间节省大约50%。

视频是有结构的,播放视频和编码都是按照正常的顺序去播放,但倒放需要满足的效果是从后往前播放,但解码有依赖的序列,不能随机访问,当GOP比较大时相对比较棘手。处理方案是首先对视频进行预处理,预处理有三种方式,第一种是将视频预处理成全I帧编码,但I帧全是帧内编码,压缩比不高,存储体积较大。第二种是将视频预处理成小GOP的正序,播放时缓存整个GOP,渲染时调整顺序,但对内存消耗比较高。第三种方式是将视频预处理成小GOP的逆序文件,播放时不做特殊缓存。

3.5 兼容性处理

兼容性处理分为输入素材、处理中和输出控制三部分,具体内容如上图所示。

4. 延伸和展望

4.1 3D和智能化

目前传统的剪辑技术随着科技的发展,在未来一定会越来越多的与3D、AR结合。上图中的3D+AR渲染示例中龙是虚拟的,但在显示屏中还是可以显示出龙的效果,右图使用AI换脸技术将网红主播的脸换成迪丽热巴。

4.2 云+多端

另一方面是关于云和端融合方面的展望,这其中又分为离线式和交互式两种方式,离线式主要的应用场景是在端上做剪辑操作,但实际计算是在云端,比如在端上上传几张照片,云端套用模板自动生成复杂的视频效果,使终端变成展示和操控的界面,操作生成的剪辑描述脚本可以在云端或其他端执行,也就是One Script,Run anywhere。

交互式类似于云桌面和云游戏,云端会将实时预览画面(低画质)传输到终端,操作指令通过实时的信道传给云端,在云端去做处理,这样可以把计算能力分离,降低终端的算力要求,同时云端可以提供海量的素材,终端不用先下载后使用。

本次分享的内容只是360视频云的在实践过程中的一部分,更多精彩内容请报名参加LiveVideoStackCon 2019北京 音视频技术大会与讲师一起交流沟通。

LiveVideoStack 招募

LiveVideoStack正在招募编辑/记者/运营,与全球顶尖多媒体技术专家和LiveVideoStack年轻的伙伴一起,推动多媒体技术生态发展。同时,也欢迎你利用业余时间、远程参与内容生产。了解岗位信息请在BOSS直聘上搜索“LiveVideoStack”,或通过微信“Tony_Bao_”与主编包研交流。

LiveVideoStackCon 2019北京 音视频技术大会 初版日程现已上线,扫描图中二维码或点击【阅读原文】了解大会最新日程。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
媒体处理
媒体处理(Media Processing Service,MPS)是一种云端音视频处理服务。基于腾讯多年音视频领域的深耕,为您提供极致的编码能力,大幅节约存储及带宽成本、实现全平台播放,同时提供视频截图、音视频增强、内容理解、内容审核等能力,满足您在各种场景下对视频的处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档