腾讯视频云剪辑技术实现

1 背景

互联网视频行业两大竞争方向,丰富的内容IP与前沿技术,对于不同视频内容越多,观看人数相应会越多。但对于同一内容,用户有多个选择时,理当选择体验最好的观看,排除习惯因素。所以不断对技术优化和创新是维持用户粘性和持续增加用户数量的重要环节,也是公司节省成本和开支有效方法。围绕用户体验和成本优化,腾讯视频推出了云剪辑系统。

2 云剪辑

视频点播业务常规上线转码流程简述:

(1)、采集卫星信号TS流

(2)、离线非编软件剪辑广告、加字幕

(3)、转码各种清晰度视频

(4)、上线各种清晰度视频

以上整个流程在后期处理花费大量时间,造成节目延迟上线,给用户带来不好体验。

2.1 云剪辑思想

云剪辑是一种用于在线编辑直播流一种实现方法,卫星信号接入直播编码器输出两路在线直播流,一路低码,一路高码,两路具有相同PTS时间。低码用于在线剪辑,高码用于分布式后台转码。在线剪辑比常规剪辑流程更快,因为剪辑操作在线上完成,而不是把直播节目采集完成线下编辑,当节目直播结束,整个节目也被剪辑完,最后在线剪辑将输出一个用于记录打点信息(广告的入点和出点)的节目文件,分布式后台转码通过这个文件记录的打点信息切出广告。

2.2 云剪辑架构

2.3 云剪辑优化思想和方法

在线剪辑虽然线下编辑快,但线上剪辑技术上更加复杂,因为操作本地文件比操作网络流文件更容易,如Seek响应延迟会很大、网络流没有完整索引文件,切割视频将不精确。所以在这里给出解决思路和想法,欢迎各位大牛指正。

2.3.1 模糊 seek 思想

用户在时间轴拖动游标时,实际不需要精确操作,开始只要知道广告出现的大概位置,基于这样的原理,可以对云剪辑seek操作做优化,每次传输和解码的数据只需要关键帧数据即可,大大提高了云剪辑响应的速度。

OutFramekey= F(pos)

pos是当前用户时间轴的位置,F用于把当前用户位置最近关键帧解码出来。

2.4 帧精确切割

在线剪辑预览是基于HLS技术实现,HLS每一个分片都是一个TS文件,TS中存放时码的字段只有33位,每秒是90khz单位,该字段每26小时复位一次.还有时码跳变情况。

为什么要保证时码严格连续唯一单调递增呢?

假如播放某个网络流,每一帧都有一个PTS,如果中间时码复位和跳变,播放就会异常或乱序。最常见直播过程出现半个小时断流,那么用户预览会半个小时黑屏,最好能够自动跳过黑屏部分,继续播放黑屏后面有效画面。seek操作也是同样的原理,如果用户显示时间轴上某个位置的帧,只有在连续唯一单调递增的时码里查找,才能够找到正确的帧。

帧精确的关键所在是为每一帧设置一个严格连续单调递增的唯一时码。那如何才能实现单调递增的唯一时码呢?

m3u8 文件中存储每一个 ts 分片都有一个近似时长字段

“#EXT-X-TARGETDURATION”。那么可以给出每帧的 PTS 计算公式

分片 PTS 计算公式:

=

为第n片的近似时长,分片的实际时长

,分片第一帧的

,分片第i帧的

,片内每帧PTS通过视频帧率和帧号计算得到。

每帧PTS的计算公式:

=

+

经过计算后,

<=

<

,并严格唯一单调递增,即

从时间线精确切除某广告位置方法如下:

(1)、用户先通过模糊seek定位广告所在分片n.

(2)、通过左移右移一帧寻找广告开始结束位置。

(3)、左移一帧查找当前

(4)、右移一帧查找当前

(5)、直到查找到广告开始结束位置

(6)、获取广告开始结束位置,分片名+分片内广告真正开始结束时间。

2.5 所见即所得

在直播体育赛事节目时,视频背景会出现广告画面,在没有授权的情况,需要擦除广告。对于这些功能,通过线下非编处理,费时费力。所以云剪辑集成了擦除广告、加标、去黑边等功能,显著提高节目的编辑效率。

使用NPAPI插件技术,响应鼠标拖动消息,每次数据移动消息,显示最新操作效果,通过双缓冲方式渲染,避免闪烁,即拖即现。

3 云剪辑未来方向

随着短视频流行,视频行业互联网公司都推出了视频剪辑软件,比如搜狐云剪辑,360快剪辑,爱奇艺在线非编等,腾讯视频云剪辑主要用于剪辑直播节目,点播节目还无法剪辑。对比各家剪辑软件,功能都相对简单,与广电非编软件有一定差距,如国内的索贝和大洋非编软件。

未来可把云剪辑打造成一款通用剪辑软件,即可用于内部编辑,也可用于外部用户。剪辑软件可发挥的空间还很大,可有各种各样的玩法,比如字幕和酷炫的特效,在线素材库,提供配音、配图等,类似广电行业图文包装系统。系统。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

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

编辑于

王颖琦的专栏

1 篇文章2 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

分享:自学编程的方法

不管是在某些论坛上,或者在微博上,都看到过很多人提问如何自学编程。心声共鸣啊,我就是从完全自学开启编程之路的。 要说到自学的过程、要多长时间才算学会、有什么具体...

2564
来自专栏VRPinea

经典扫雷游戏推出VR版,感觉童年又回来了!

3416
来自专栏IMWeb前端团队

程序员编程的10个实用技巧...| 慕课网

下面是我自己在工作中学到的一些简单的技巧和策略,希望能对各位有用。   1.橡皮鸭调试法    不知道各位有没有这样的经历,当你正在给别人描述问题的...

1959
来自专栏Java进阶干货

工作2年半跳槽面试阿里,成功拿到offer,凭什么?

2015年刚毕业的我,进入了一家小小的公司实习工作,在学校学了三年软件开发的我,还是想去寻找一份互联网行业的工作,这样更能学以致用发挥自己的特长。一直到18年三...

1291
来自专栏CSDN技术头条

Hacker曾经知晓的那些事

笔者想到现在年轻的Hacker们对ASCII表和那些奇怪的控制字符越来越陌生,不禁感慨万千。 这些知识原本是年轻Hacker们初出茅庐的第一课。然而世事变迁无常...

20110
来自专栏大宽宽的碎碎念

如何积累知识和技能答网友-如何积累知识和技能一个故事凡事都有目标形象化关联不断的学,灵动的用结论

33513
来自专栏互联网杂技

花了7天看了上千个交互动效神作,我总结出5个技巧

对一个全无经验的动效新手而言,如何制作出「正确」而不是「华丽」的动效?今天这篇Medium 上的好文,从克制、交互叙述流程、一步完成、不是动效的错和把握细节五个...

3286
来自专栏JAVA烂猪皮

如何成为10倍速的程序员

国外有个词叫做10x Programmer,直译是以一当十的程序员。我并不认为一个技术大牛能完成10个普通程序员的工作,技术大牛会花1/10的时间把工作做完,然...

942
来自专栏Keegan小钢

016 | 漫谈区块链共识机制

并标明原文链接:http://keeganlee.me/post/blockchain/20180425微信订阅号:keeganlee_me写于2018-04-...

771
来自专栏ionic3+

San——百度兼容IE8的mvvm框架,还有一段路要走

很早前就有留意到San这个框架,其吸睛之处是兼容IE8、mvvm,这让人不自觉把司徒正美的avalon放在一起比较,avalon抄了很多angular1的特性,...

1013

扫码关注云+社区