天天看点

腾讯视频云剪辑技术实现

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

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

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

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

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

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

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

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

腾讯视频云剪辑技术实现

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

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

OutFramekey= F(pos)

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

在线剪辑预览是基于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)、获取广告开始结束位置,分片名+分片内广告真正开始结束时间。

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

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

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

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