8路高清直播流编码器设计
【摘要】随着技术进步,高清节目直播成为视频网站的重要功能。本文在介绍目前网络直播编码器构成与性能基础上,设计并实现了一种高性能高密度8路HDMI输入高清直播流编码器,在1U小机箱内实现8路HDMI采集、实时高清编码、RTMP/UDP/RTP推送,并进行了长期测试。与当前主流编码器方案比较,编码效率提高50%,功耗下降65%,体积减少80%,是一款创新性的网络高清直播流编码器。
1.网络高清直播流编码器现状
网络高清直播是人们获得实时信息的一种重要手段,大有取代卫星或有线电视的趋势。
1.1高清信源的采集接口
绝大多数高清编码采用HDMI接口作为信源输入。
高清直播源大都来自现有电视信号,鉴于很多电视信号压缩加密传送,需要专用机顶盒方能解码显示,一般是从机顶盒HDMI输出采集信号。
信源还可来自蓝光DVD播放机、高清游戏机和电脑,这些设备均有HDMI输出接口。
对于只有SDI输出的高清摄像机,可以通过转换器转换成HDMI输出。
1.2 现有高清直播流编码器方案
由于网络高清直播是新生事物,每个直播服务商都有自己的实现方案,总体可分为以下几种形式:
1)单路方案:一路HDMI输入,一路RTMP输出。又有两种实现形式:
A)专用设备
图1-1是一款HDMI进,RTMP出的设备,能够完成HDMI采集,H264压缩,RTMP推送,但它不关注编码效率,估计使用了类似网络摄像头的压缩芯片。
B)组装设备
图1-2是常见实现方式,由一块单路HDMI采集卡和一台小PC,配合Flash Media Live Encoder软件构成。Flash
Media Live Encoder使用简单方便,但其低码流下压缩质量常招人诟病。
2)多路方案:多路方案采用多路HDMI采集卡加高性能PC实现,目前市面上HDMI采集卡最多为4路。
多路方案均采用软件压缩,为了4路高清实时编码,CPU必须是4核或以上。根据组装人员技术水平,软件分为两类:
A)直接采用Flash Media Live Encoder。使用简单方便,但其低码流下编码质量不好;
B)采用X264编码。X264是目前最好的H264编码软件,在低码流情况下,压缩质量有较大提升,但其配置复杂,且还要自己完成RTMP推送工作,对技术人员要求较高。
2.高性能8路高清直播流编码器设计
设计思路是完成FPGA与CPU、GPU间的紧耦合,在1U机箱内实现8路采集、编码、RTMP推送,并将目前编码效率提升50%以上;操作界面简单实用,便于非技术人员操作。
2.1 采集卡及驱动设计
目前市面上HDMI采集卡最多集成4路输入,配备AVSTREAM驱动,通用性强,适应面广,但未考虑与新型CPU的紧耦合。
本采集卡唯一使用对象是高性能编码系统,可以降低通用性考虑,而更关注其高性能。因此在设计上有几个特点:
1)集成度高,允许8路HDMI同时输入和实时采集;
2)DMA传输效率高。传统采集卡设计为了兼容性,常采用页表方式申请内存,导致传输效率下降。本设计对象为专用设备,在开机加载驱动时申请大量连续内存,提高DMA传输效率;
3)使用图形加速内存。普通采集卡使用系统内存,便于CPU获得图像数据进行软件压缩。本设计主要依靠硬件压缩,使用图形内存,无需CPU干预,借助DXVA加速,提高压缩速度。
2.2 编码算法优化
编码算法优化,是本设计一大亮点,优化后的算法,比目前市面常用算法,编码效率提高50%以上,且同时支持8路高清实时编码。
算法优化分为多个方面:
1)数据采集优化。采集卡硬件直接转换数据格式,将数据写入需要的缓冲区,无需CPU参与数据拷贝与格式转换;
2)硬件加速编码。采用最新硬件加速编码技术,在不影响实时编码速度情况下,采用H264
HighProfile最复杂编码配置,提高编码质量;
3)多B帧编码。
B帧能够显著提高编码效率,但一般视频服务器遇到2个以上连续B帧,就会产生画面抖动,本算法对其做了预矫正,在连续5个B帧时,能够流畅播放。
4)智能的码率控制。按常识,运动图像会增大码流,运动越剧烈,码流越高。但人眼对快速运动物体的分辨率会下降,利用该特性,在宏块(MB)级分析其运动特性,较静止的MB分配较高质量,运动大的MB分配较低质量,从而在不降低视觉效果基础上,大大降低码流。
5)多路统计复用。本设计为8路实时编码,考虑到8路输入信号的非相关性,采用统计复用的方式,将总码流控制在一定范围,8路编码码流可相互借用。
X264是目前公认最好的H264编码软件,在720P分辨率下,本优化算法与X264性能比较见图2-2。
现有编码系统,使用4路HDMI采集卡(或4块单路HDMI采集卡)+ CPU软压,为了满足4路高清编码速度,常采用X264
fast或veryfast模式。
从图上可以看出,在低码率情况下,优化编码算法优于X264算法1~2db,
或者说,优化算法600Kbps码流效果相当于原来1~1.4Mbps码流效果。
2.3 软件设计
软件基本功能是完成图像采集、编码、RTMP/UDP/RTP发送。为了达到良好的编码效率,需要动态配置大量编码参数;为了通过RTMP/UDP/RTP与流媒体服务器连接,还需设置相关连接参数。
软件界面极为简洁,见图2-3,用户仅需设置每路的压缩质量与流媒体服务器地址即可,内部复杂设置与优化均由软件内部完成。
压缩质量分为Excellent,Good,Fair,Poor
4种,对应的平均码流分别为1.3Mbps,1.0Mbps,800Kbps,600Kbps,该码流是综艺节目的平均码流,对于体育节目,码流上浮15~20%,对于新闻节目,码率下浮10~15%。
第一版软件界面,会实时显示各路实时平均码率,第二版软件,增加实时监控8路HDMI采集原始图像及流媒体服务器发布后的回环图像功能。
2.4 整机装配
整机采用1U 250mm短机箱,由I3 4370(或G3220)CPU,微星H81I
miniITX主板,双滚珠涡轮风扇,2x2GB DDR3双通道内存,1U Flex电源,32GB
SSD,专用8路HDMI采集卡构成,见图2-4,2-5,2-6。
3. 整机测试
3.1
整机接口及测试
1)输入接口:HDMI(x8);
2)高清格式:1280*720p50/60;
3)输出接口:RJ45
100/1000Mbps;
4)输出协议:RTMP/UDP/RTP;
5)供电:AC110/220 50/60Hz。
重量4Kg, 满负荷工作时,整机功耗小于70W。
测试:输入信号采用8台机顶盒实时接收不同的卫星高清节目,经多台HDMI分配器,将信号送到3台机器的24路HDMI输入;编码后的码流封成RTMP包,经交换机送到WOWZA流媒体服务器。
3.2 与现有同类设备的比较
比较时,同类4路编码产品,体积、功耗均按两台设备计算。
编码效率:600Kbps达到同类1~1.4Mbps编码效果,效率提升50%以上
功耗:75W与同类2x100W 相比,下降65%以上
体积:1U与2x3U机箱相比,减少80%以上
4.总结
综上所述,高性能8路高清直播流编码器的使用,将极大节省网络流量、电费及空间占用率,提高设备可靠性,降低运营成本和入门门槛。
1)Excellent(优):1.3Mbps www.tongshi.com/temp/Excellent.rar
2)Good(良):1.0Mbps www.tongshi.com/temp/Good.rar
3)Fair(中):800Kbps www.tongshi.com/temp/Fair.rar
4)Poor(一般):600Kbps www.tongshi.com/temp/Poor.rar
观看实时编码效果,写信给support@tongshi.com,获得直播地址URL后,粘贴到VLC中观看。