Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

一入多出转码系统

背景
● 应用场景:
○ 相同视频,多次转码
■ 不同分辨率:
● 输入1080p, 输出1080p+720p
● 输入720p, 输出720p+540p
■ 不同码率
● 输入720p,输出720p@500kbps, 720p@1000kbps或者720p@1500kbps
■ 不同编码器转码
● x264, x265, vvc和AV1
背景
● 当前转码环境:
4-CPU集群

低分辨率视频转码

输入视频 解封装 解码器 下采样 前处理 编码器 封装 输出文件

高分辨率视频转码

输入视频 解封装 解码器 下采样 前处理 编码器 封装 输出文件


目标
● 同时输出不同分辨率视频:
○ 输入1080p, 输出720p+1080p
● 编码信息的复用:
○ 1080p复用720p的编码信息, 提高转码速度
■ 提高1080p转码速度,期望和 720p的转码速度一致
■ 保证720p转码速度不被拖慢
设计方案
● 实现模块:
○ 转码模块:
■ 解码过程和转码过程解耦合;
■ 不同的转码过程并行执行;
○ 编码器:
■ 共享编码信息:
● 编码信息队列;
■ 快速算法:
● 利用共享编码信息加速1080p的编码速度;
设计方案
● 一入多出转码框架

8-CPU集群

低分辨率转码
输入视频 解封装 解码器

解码帧队列 下采样 前处理 编码器 封装 输出文件


主线程

编码信息队列

解码帧队列 下采样 前处理 编码器 封装 输出文件

高分辨率转码
设计方案
● 一入多出编码器框架
○ LookAhead信息共享:
■ Base-Encoder:
● 向Buffer写入每一帧的帧类型;
● 返回mini-GOP的帧类型
■ non-Base-Encoder:
● 从Buffer中读取每一帧的帧类型,然后做Cutree和vbv
● 返回mini-GOP的帧类型
设计方案
● 一入多出编码器框架
○ 编码信息共享:
■ 以4x4为基本单元存储
■ 使用block的(x,y)坐标访问数据
■ 不同分辨率之 间信息读取
Input
slave
帧类型队列
预分析

master slave
帧类型队列
预分析 预分析
slave
帧类型队列
预分析

编码
编码信息队列

编码信息队列 output4
编码 编码

output1 编码信息队列 编码
output3

output2
设计方案
● 一入多出快速算法
○ 快速块划分:
■ 利用低分辨率 视频的最优划分深度和模式信息,裁剪高分辨率的 块划分过程
○ 参考帧选择:
■ 利用低分辨率 视频的最优参考帧信息,裁剪高分辨率的参考 帧
○ 运动估计搜索范围:
■ 利用低分辨率 视频的最优MV信息,限制搜索范 围
○ 全零块检测
■ 利用低分辨率 视频的量化系数, 检测全零块,跳过RDOQ
实验结果
● 实验条件
○ 输入1080p视频,输出1080p和720p视频,其中1080p复用720p的编码信息
■ CRF: 22 27 32 37,GOP size等于16,开启CuTree
■ Anchor: 1080p和720p分别在两个4核机器上并行 执行
■ Test: 一入多出转码在8核机器上执行
○ 实验结果:
■ 720p编码时间保持不变
● Anchor和Test的720p编码时间之差小于3%;
■ 1080p编码时间节省46%,BDRate-PSNR loss 0.98%

You might also like