腾讯视频云剪辑技术实现

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 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

老码农怎么学Windows编程

在微软公司的windows平台下,有众多的编程语言和编程模式,比如windows SDK、C/C++、MFC、VB、Win32汇编等,哪种是最合适你的呢?小编认...

35313
来自专栏哲学驱动设计

“是男人就下100层”

前言     这游戏跟《兔子跳铃铛》一样,也是在大学的时候写的。不过前者使用的是C++,而这个则是在大三上学期的时候用JAVA,在J2ME平台上开发出来的。代码...

1865
来自专栏数据结构与算法

codevs 原创抄袭题 5969 [AK]刻录光盘

题目描述 Description  • 在FJOI2010夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学...

3095
来自专栏GopherCoder

『Python 爬虫文集梳理』

2094
来自专栏大数据文摘

数学之美:图论和网络爬虫

2564
来自专栏灯塔大数据

干货|用python抓取摩拜单车API数据并做可视化分析(源码)

在APP中能看到很多单车,但走到那里的时候,才发现车并不在那里。有些车不知道藏到了哪里;有些车或许是在高楼的后面,由于有GPS的误差而找不到了;有些车被放到了...

6277
来自专栏微服务生态

分布式调用链监控资源总结

http://bigbully.github.io/Dapper-translation/

784
来自专栏老九学堂

如何成为一个牛逼的C/C++程序员?

这个题目的噱头太大,要真的写起来, 足够写一本书了。 老九君分享一些经验,希望能让初学的小伙伴少走弯路。 每个人的情况不一样,所以下面的描述可能并不适合每一个...

2764
来自专栏何俊林

菜鸡程序员是如何写代码的?

每个程序员都要历经从菜鸡到大牛过程蜕变胡过程。当初大家起点都差不多,工作多年后,有些人依然停留在菜鸡,有些人却已成为大牛,所有的事情,都是一点一滴习惯养成。让我...

1143
来自专栏杨熹的专栏

Python很强大

今天查了很多资料,梳理一下Python的知识面。 ? Python 的语法非常简洁,写起来就像写英语一样,不仅简单而且可以高效地实现面向对象编程。与 C/C++...

3887

扫码关注云+社区