APP下载

高清视频HEVC编码实时传输系统的设计

2018-12-10舒行科孟祥飞

实验室研究与探索 2018年11期
关键词:开发板数据量编码器

乔 莉, 李 博, 舒行科, 孟祥飞

(1.中北大学 仪器科学与动态测试教育部重点实验室,太原 030051;2.中国电子科技集团公司第三十三研究所,太原 030006)

0 引 言

在大数据信息时代,随着视频技术的发展和应用,海量的视频信息深入到我们的工作和生活的方方面面中。随着高清(HD)、超高清(UHD)、3D和多视点(Multi-View)视频的普及,海量的视频所携带的数据量越来越庞大,例如,分辨率为1920×1080的高清视频,帧率为每秒30帧,若3个色彩分量每个像素值用8个bit数来表示,则每一秒的视频数据量为1920×1080×30×3×8≈1493 Mbit,这么大的数据量造成传输网络难以承受[1]。针对海量视频数据的在线实时传输,需要有高效的视频编码方法来解决这一问题。

2013年由国际电信组织(International Telecommunication Union,IUT)和运动图像专家组(Moving Picture Exp*erts Group,MPEG)联合成立的JCT-VC(Joint Collaborative Team-Video Coding)组织提出的新一代高效视频编码标准(High Efficiency Video Coding,HEVC)[2]。HEVC使用基于四叉树的块划分,对帧内的35种模式预测,样本自适应偏移,基于离散余弦变换的插值运动补偿滤波器和高级运动矢量预测。最新的视频编码技术HEVC提高了编码效率,比上一代H.264/AVC在同样的编码质量下,码率能够节约50%以上[3-5]。高压缩比、低码率和特有的并行处理设计等优点,使得HEVC快速在各类视频业务中获得广泛应用。

1 方案设计与实现

1.1 硬件方案设计

系统以TMS320C6678 DSP开发板为硬件实现平台,选用TI的高性能数字信号处理器TMS320C6678芯片作为实现HEVC编码器的核心CPU。TMS320C6678主要特点:①处理器架构先进,基于TI Keystone的多核定点/浮点数字信号处理器,DSP集成了C66x CorePac,集成了8个C66x核;②运算能力强,每个核心主频1 GHz/1.25 GHz,1 GHz定点性能为32 GMAC/core,1 GHz浮点性能为16 GFLOP/core,单核可高达40GMACS和20GFLOPS,每核心32 KB L1P、32 KB L1D、512 KB L2,4 MB多核共享内存,8 192个多用途硬件队列,支持DMA传输,具有多核共享存储器控制器(MSMC);③网络性能优越:支持双千兆网口,带有由1个数据包加速器和1个安全加速器组成的网络协处理器;④拓展资源丰富:支持PCIe、SRIO、HyperLink16等多种高速接口,同时支持I2C、SPI、UART等常见接口等。用于高压缩视频的HEVC编解码、实时传输提供了很好的硬件平台[6-7]。

TI提供了面向TMS320C6678的视频处理开发包Multicore Video Software Development Kit (MCSDK-Video),开发包支持多种格式的优化编解码的快速开发,如表1所示[8]。系统在TMS320C6678 DSP开发板硬件平台上,引入新一代视频编码标准HEVC对视频进行实时压缩,可以获得更高压缩比。

系统选用相机为千兆网相机,可设置输出1920×1080@(30-60)f/s的实时图像数据,输出的图像经千兆网口传入台式工作机。台式工作机作为HOST主机,将传入的图像经PCIE接口传给DSP板,对图像进行实时的编码,编码后的码流通过DSP板的网口传至笔记本电脑端VLC HEVC进行实时的解码显示。系统在该平台上实现1920×1080@30 f/s的HEVC编码实时网络传输,实时将编码后的码流通过网口发送到上位机进行解码显示。HEVC编码后的UDP数据包通过以太网传输到笔记本终端上使用VLC HEVC软件接收和解码。VLC HEVC软件采用硬件加速,可实现1080p30帧/s的实时解码显示。高清视频HEVC编码实时传输系统如下图1所示,千兆网相机、HOST台式主机、TMS320C6678 DSP开发板、笔记本终端VLC HEVC软件实时显示之间通过以太网相连。

表1TMS320C6678的视频处理开发包支持多种格式的优化编解码

Codec SupportVideo codecsJPEG 2000, AVC-Intra 50/100, H.265/HEVC, H.264 10-bit 4:2:2, H.263, MPEG-4, MPEG-2 4:2:2, JPEG, VC1, SVC, Sorenson Spark encoders and decodersAudio codecsAAC, AACv2, AC3, MP3, WMA8, WMA9 encoders and decodersVoice codecsG.711, G.718, G.722, G.722.1, G.723, G.726, G.728, G.729AB, G.729G, GSM-ARM w/EFR, GSM-FR, EVRC-B, WBAMR

图1 高压缩视频HEVC实时传输系统

1.2 软件方案设计

1.2.1HEVC视频编码

视频可以编码是因为视频存在多种冗余,主要有空间冗余、时间冗余、编码冗余和主观冗余等,如表2所示。由于视频的冗余,使得视频有很大的编码空间和可能性,可以通过多种编码框架中的多种编码模块,实现高压缩比。

表2 视频冗余的种类及定义

HEVC视频编码标准采用图编码框架,基于块的混合编码框架,如图2所示,包括变化、量化、熵编码、帧内预测、帧间预测、环路滤波等模块,每个模块中都引入了新的编码技术。HEVC视频编码有两个显著特点:一是提高压缩效率,在相同的视觉质量下,HEVC视频编码的比特率为H.264/AVC的1/2,但是相应地其计算的复杂度提高了2~10倍;二是增强其对并行处理机制的支持,在计算复杂度提高的情况下仍然能够做到快速实时处理。

图2 HEVC视频标准编码框架

最新的视频编码压缩标准HEVC视频编码,支持高分辨率视频序列,比以前的标准H.264/AVC编码具有更好的性能。HEVC视频编码基于一个四叉树编码器,一个树的编码单元(通常为64×64)可以拆分成更小的。HEVC帧内预测的两个重要特点:一个是5层帧内预测块类型(包括Intra4×4、Intra8×8、Intra16×16、Intra32×32、Intra64×64)等5种大小的PU,另一个特点是其中每一种大小的PU都对应35种预测模式,包括Planar模式、DC模式和33种角度模式[9-12],来提高编码效率。

1.2.2CCSV5.5

系统软件设计是在Windows下的以CCS V5.5为软件实现平台。CCS V5.5软件比目前常用的视频处理Linux系统更加方便简洁。Linux系统的程序源代码专业性强,更改、设计、移植复杂困难。

打开CCS V5.5软件,新建一个工程:File->New->CCS Project(Project->New CCS Project);设置工程名称project name如“High Definition Video HEVC Encoding_test”,Device选择开发芯片对应的型号C6678,Advanced Setting用来设置开发条件设备大下端、编译器版本、包含的link文件及包含库等,一般情况下默认即可,如果需要使用SYS/BIOS则选择Empty RTSC Project否则选择Empty Project。如果选择Empty Project,点击finish即可,此工程建立完成;如果选择Empty RTSC Project,则点击next。最后配置BIOS,选择需要使用的模块库,根据开发板芯片型号选择合适的目标类别,选择合适的Platform及编译版本,点击finish即可完成新建工程的建立。

1.2.3x265算法C6678DSP移植

x265是符合HEVC标准的视频压缩编码的开源自由软件及函数库,是现有实现HEVC标准的性能优异的编码器。系统使用x265进行视频编码,x265算法移植在DSP C6678上的实现视频实时编码[13-14]。

编码器参数设置:cliopt.parse(argc,argv)的主要功能是分析参数,直接调用x265.cpp中的bool CLIOptions::parse(int argc, char**argv)函数,该函数会打印输入视频的分辨率、帧率、视频格式、所要编码的帧数目以及输出文件名称等

cliopt.api->param_free(cliopt.param);

x265_param*param = cliopt.param;

const x265_api*api = cliopt.api;

cliopt.output->setParam(param);

打开编码器配置:x265_encoder*encoder = api->encoder_open(param);

获取编码器参数:api->encoder_parameters(encoder, param);

编码一帧图像:int numEncoded = api->encoder_encode(encoder, &p_nal, &nal, pic_in, pic_recon);

关闭编码器:api->encoder_close(encoder);

释放参数:api->param_free(param);

1.2.4以太网络传输

HEVC分成视频编码层VCL和网络适配层NAL两层。VCL是视频编码处理,NAL处理编码后的数据传输到网络。NAL上的数据流由一个一个的NALU(NAL单元)构成,NALU中的数据部分需要整字节化(因为数据可能不足整数个字节),即在真实的数据后面添加一个比特1(称为停止比特),如果不足整数个字节,那么需要补充比特0,这些总称为RBSP数据(真实数据+比特1+若干比特0)。

NALU在网上传输时先生成字节流的过程如下:①在每个NALU前面插入3字节的起始码start_code_prefix_one_3bytes,其值为0x000001;②如果NALU的类型为:VPS_NUT,SPS_NUT,PPS_NUT或者解码顺序为一个AU的第一个NALU,则在其起始码前再插入一个zero_byte,值为0x00;③在视频首个NALU的起始码(可能包含zero_byte)前插入leading_zero_8bits,值是0x00;④根据需要可在每个NALU后增加trailing_zero_8 bits,值是0x00,作为填充数据。之后生成分组流使用RTP、RTMP等协议,把NALU直接作为网络分组的有效载荷进行传输。

TMS320C6678 DSP开发板将HEVC编码视频实时通过以太网传输给笔记本终端VLC HEVC软件实时显示,高清视频以太网传输过程中图像如图3所示。

(a) 视频采集到的图像

图3 高清视频以太网传输中图像

2 系统测试及结果分析

1 s视频图像文件的数据量计算公式(不压缩):数据量 = 图像分辨率(像素)×彩色深度(位)×帧率/(8×1 024×1 024)

视频码率的计算公式:[视频码率](Kb/s)=[文件大小](KB)×8/[时间](s)

参考文献[15]和参考文献[16]设计了一种采用CCD摄像头、TMS320DM6467 DSP开发板、RTP协议、PC机VLC播放器等设计的使用H.264视频编码实时传输系统,视频压缩比大于150倍,满足视频监控需求。本文高清视频HEVC编码实时传输系统,实验视频采集时间为3 min,视频的分辨率为1920×1080,帧率为30 f/s,彩色深度为8位,没有经过压缩的视频数据量为10 678.7 MB。在编码完成的数据通过网络传输时,设置输出码率为10 Mb/s,得到压缩后的视频数据量仅为35 MB,压缩比为305.1,比传统的H.264视频编码大大提高了视频压缩率。

3 结 语

高清视频HEVC编码实时传输系统以千兆网相机、TMS320C6678 DSP开发板等将高清视频实时编码并通过以太网传输。实验结果表明:新一代视频编码HEVC全新的编码方式,在相同的视频质量基准下,视频容量减少大约39%~74%,有效提升了视频压缩率,与传统的H.264视频编码相比,仅用原先的一半带宽即可播放相同质量的视频,而且还能获得更好的信噪比(PSNR)效果,实时性高。系统的搭建、开发灵活便捷,可根据具体需要更改码率获得不同压缩率的视频,在高清视频会议、高清视频传输等领域具有广阔的发展应用前景。

猜你喜欢

开发板数据量编码器
基于大数据量的初至层析成像算法优化
计算Lyapunov指数的模糊C均值聚类小数据量法
高刷新率不容易显示器需求与接口标准带宽
宽带信号采集与大数据量传输系统设计与研究
基于FPGA的同步机轴角编码器
基于双增量码道的绝对式编码器设计
浅析单片机开发板的设计与制作
JESD204B接口协议中的8B10B编码器设计
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
多总线式光电编码器的设计与应用