最近中美贸易战依然没有消退的迹象,美国政客把华为公司列入“实体名单”,一时间有关华为的消息满天飞。某天在某聊天群里,听行家们在高谈阔论,其中一条信息炸开了我的眼球:华为是良心企业,对外说自己是80分,其实是100~120分,不像大部分的企业,对外说自己是100分,其实只有70~80分。就拿Hi3531D来说,数据手册(Datasheet)上说它可以做8路1080p@30的H264/H265编码,但实际测试能做12路1080p@30的H264/H265编码。当听到这个消息时,我觉得他太新奇了,不只是国内的大多企业,就算国外的企业,也是通常是吹嘘自己的能力,在宣传上夸大自己的性能指标。多年以前,我们使用TI达芬奇DM6467方案,手册上吹嘘能做4路D1的H264编码,结果我们实际做的时候,用原厂评估的库,勉强能做3路D1,后购买了印度佬细心优化过的收费的编码库,勉强能做4路的D1,但帧率经常不足25fps,尤其是输入信号源画面变化比较大的时候,帧率就不足25fps了。因此现在听说有这样的良心企业,自己决定实际去测试一下,看看群里行家是忽悠人还是真有其事,要是是真的,中国有华为这样的企业真是国之有幸啊!
在淘宝上搜素3531d开发板
或者海思开发板
,出来很多很多产品,看来用华为芯片的企业还真不少啊!对比了多家之后,决定采购这家公司的产品,因为他们自带的软件能比较方便地评估出Hi3531D的各种绝技,购买链接如下:
https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-18827270235.41.76dd23de00enEj&id=590880118651
上面的链接是成品,不提供开发资料。下面这个链接是开发板的,厂家会提供开发资料,有SDK和Encoder源码等:
https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18827270222.2.364c6ffdjGNHLR&id=579544624529
你要是个软件开发者,不防移步去看看他们的SDK以及基于SDK编写Encoder源码,我们在这篇文章中使用的软件就是他们的Encoder软件。有了这个Encoder源码,你要做hdmi编码器
就基本上不用再做开发了,也许他们的思路就是闭源硬件开源软件吧。
12
路1080p@30编码能力 由于购买的产品只有5个HDMI输入口,为了能做12路编码测试,我们用另外7个网络流进行解码然后再进行编码(转码),这样就可以测试12路同时编码了(还顺带测试了7路网络流的解码,数据手册上说可以做8路同时解码,但实际也能做到12路1080p@30解码)。
上图可以看到前面5路是HDMI输入的,输入的信号是1080p@60,编码时可以做1080p@60输出,但为了测试传说中同时12路1080p@30 H264/H265编码
能力,我们设置输出为1080p@30。后面7路是网络流(1080p@30)转码:
配置好以后,请系好安全带,马上就要空中发射火箭了,不是直飞苍穹,就是堕落大地,反正很刺激。上图(cat /proc/umap/venc
):
数一数红色的框,有多少个?12个?没错,是**12个!!!**,而且帧率在29~31之间!看到这,你服了吗?不管你服不服,反正我服了。再往下看看还有啥黑科技。
2
路4K@30(3840x2160)编码+4
路1080p@30编码能力 购买的产品只有5个HDMI输入口,每个口都能支持4K@30输入,但由于编码能力有限,不能全部做5路4K的编码,实际测试只能达到2路4K@30编码+4路1080p@30。
VPSS(Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去隔行等,然后再对各通道分别进行缩放、锐化等处理,最后输出多种不同分辨率的图像。海思Hi3531D提供强大的VPSS能力。海思Hi3531D的VPSS提供了下列功能:
DCMP
(解压缩)
CMP
(压缩)
FRC
(帧率控制)
Crop
(裁剪,指VPSS 对输入图像进行裁剪)
PreScale
(预缩放,对输入图像进行水平1/2 或垂直1/2 或水平垂直1/2 的缩放)
DEI
(De-interlace,去隔行。将交错的隔行视频源还原成逐行视频源)
NR
(去噪。通过参数配置,把图像中的高斯噪声去除,使得图像变得平滑,有助于降低编码码率)
LTI/CTI
(Luma/Chroma Transition Improvement,亮度/色度过渡增强,即图像锐化即Sharpen。锐化图像的边缘和凸显图像细节,对经过缩放(Scale)后的图像进行频率补偿或增强,使得图像边缘锐利,轮廓清晰)
Scale
(缩放,对图像进行缩小或放大。VPSS 最大支持对输入图像做水平和垂直16 倍放大,或者水平和垂直15倍缩小。VPSS 放大后的输出图像宽度不能超过4096)
ES
(边缘平滑)
IE
(图像增强)
DCI
(Dynamic Contrast Improvement,动态对比度调节。对图像进行动态的对比度调节,即在增强图像暗区亮度时而不使亮区过亮,或降低亮区亮度时而不使暗区过暗)
Cover
(视频遮挡区域,对VPSS 的输出图像填充纯色块。VPSS 仅支持实心Cover,不支持虚心框Cover)
Overlay
(视频叠加区域,在GROUP 上进行位图的加载和背景色更新,支持ARGB4444、ARGB1555、ARGB8888三种格式的位图)
Mosaic
(视频马赛克区域,对VPSS 输出图像填充马赛克块)。
板卡厂家的软件提供下面几个功能(画面融合,滚动字幕,打码,台标,去隔行等),证明了海思VPSS的强大。
画面融合可以把多个视频源的画面按既定的布局拼接成另外一个画面输出,拼接的画面可以在运行状态界面上预览,也可以通过板卡的的HDMI输出接口接到电视机上监看,还可以在编码输出界面启用网络流输出。目前板卡软件预设的混合布局类型有:9宫格,4分屏,1+2,画中画。画面融合时也可以进行音频混合,在屏幕右边区域可以选择哪几个频道的声音进行混合。混合后的视音频除了通过编码压缩从网络输出以外,还可以直接把混合后的视音频从HDMI口输出,方便用户监看。题外话:这个界面还允许配置VGA输出,VGA输出可以直接把其他输入源进行输出(旁路功能)。板卡厂家提供的SDK很方便定义HMDI和VGA的输出内容,板卡厂家提供的SDK可以把HDMI和VGA输出同样的内容,也可以输出不同的内容。详细参见https://gitee.com/LinkPi/LinkLib和https://gitee.com/LinkPi/LinkLib/wikis/pages说明。
上图可以看到,9个1080P@60的画面融合成一个画面,这得多大的数据量啊,要是全部由CPU来搬运数据,就算是Intel的I7 CPU也忙不过来吧。使用cat /proc/umap/vpss
来看看VPSS处理的数据量:
强大的画面融合(融屏)能力,在下面的应用中应该是可以大展身手了:
这几个功能很常见,监控产品都能做,据说现在监控产品的大厂例如海康和大华也都在用华为海思的芯片了,所以这几个功能不算什么黑科技了。上个图给大家看看吧:
板卡厂家软件上有个开关叫全帧率去隔行
,我不大理解是什么意思,联系了板卡厂家,板卡厂家解释说他们的软件有2种去隔行方法,一个是海思自带的去隔行算法,一个是板卡厂家自己做的去隔行算法。若使用海思自带的去隔行算法,帧率就会减半,例如输入信号源是1080i@60,去隔行后帧率降为30fps即1080p@30了。若使用板卡厂家的全帧率去隔行
算法,则帧率不变,例如输入信号源是1080i@60,去隔行后为1080p@60。一开始,我认为是这个厂家故弄玄虚,把海思去隔行后的数据多复制一份,这样帧率就可以维持不变了,后来我打开他们神奇的全帧率去隔行
开关,录了一段动作变化很大的视频(例如游戏或者赛车足球什么的),录好以后用回放软件一帧一帧播放,发现没有相同画面的帧,这足以可以证明厂家不是故弄玄虚的,是货真价实的。由此可见海思VPSS的架构足够开放,能让开发者自行编写一些算法。有些人怀疑这些算法是跑在CPU上的,这种怀疑是多余的,人家5个输入源可以同时做全帧率去隔行
,我不相信海思那么弱的ARM CPU能干这个事。
国内由于起步比较晚,1080i的HDMI设备很少见,但在国外,大量1080i的HDMI设备还在使用,所以去隔行还真很有必要的。尤其是游戏直播,足球赛事直播,赛车直播等,这些画面变化是非常大的,所以由于隔行引起的百叶窗效果特别明显,若采用海思内置的去隔行算法,帧率减半,虽然百叶窗效果不见了,但画面流畅度就不佳,因此板卡厂家做的全帧率去隔行
真是国外直播行业的及时雨。
板卡厂家的软件还支持画面裁剪(裁边)。工程商在施工时经常看到有些信号的边缘总有各种各样的现象,有些信号的上边有一行白色的横条(例如DVD信号),有些信号的左右两侧有闪烁的绿条红条白条,这些虽然不致命,但经常被甲方以此为由拒绝通过验收,因此让这些工程商苦不堪言。有了这个裁剪(裁边)功能,就变得非常容易了,直接裁掉不要就好了,so easy!
海思的SDK没有提供网络流协议,也没有视频和音频的封装,就几个基于raw流的sample,sample里面各种结构体,都不知道如何填写,真让视音频开发小白们抓狂。板卡厂家提供的SDK提供了各种流协议:HTTP
, HLS
, RTSP
, UDP
, RTMP拉流
和RTMP推流
。而且能同时打开这些流协议,可见海思Hi3531D内置的ARM CPU也不是盖的。而且RTSP
, UDP
, RTMP
的延迟都在1秒以内(最快的可以做到200ms以内)。有了板卡厂家的SDK,想购买h264编码开发板
,h265编码开发板
,海思开发板
,Hi3531d开发板
,Hdmi开发板
的小白们,还犹豫什么?
该板卡支持丰富的网络流协议,支持的编码解码路数又多(支持编码的路数是12路1080p@30 H264/H265编码,支持解码的路数也是12路1080p@30 H264/H265解码)。可以适用下面的应用:
转码
应用了。http转rtmp
,http转rtsp
,http转udp
,rtsp转http
,rtsp转rtmp
,rtsp转udp
,rtmp转http
,rtmp转rtsp
,rtmp转udp
等等。由于不用解码,所以不占海思Hi3531d的编码解码资源,只占一点点ARM CPU的资源(用于数据搬运),所以可以支持很多路的不解码转流协议。 海思Hi3531d拥有强大的视频编码和解码能力,那对音频编码和解码那应该是小菜一碟了吧?错!错!!错!!!,也许是LICENSE的原因,音频编码和解码都不是硬件处理的,而是使用了ARM CPU去做的,那个颗弱小的嵌入式ARM CPU,处理音频的重采样(resample),处理回声消除(EC),做AAC编码和解码,都需要做很多优化,否则ARM CPU占用就爆了。对于做监控行业的人来说,也许并不是什么大事,毕竟监控行业的音频通常是单声道的,8K采样率的,16bit的采样精度,数据量少,CPU占用不明显,但对于做IPTV编码器的人来说,要掂量掂量自己的能力了,双声道,采样率48K,采样精度24bit,这数据量比监控行业大多了,而且IPTV编码器的音频音质要求比较高,弄不好产品是出不了货的。我们评测该板卡厂家的音频,倒是还不错,估计花费了不少心思的。而且他们还提供了音频软件增益(音量放大)功能,普通的编码器类产品都没有这个功能,但这个功能非常实用,有些输入源声音实在是太小了,又不可能要求用户在终端播放设备统一调整。
经过评测,证实了聊天群里行家说的话是真的,同时也印证了华为是有良心的企业,为了不过分刺激对手,故意隐藏了自己的真实的实力,难怪美国政客们这么担心华为,并极力遏制他,要是某兴和某想,人家还没打早跪了。谨以华为破飞机的照片做结尾,勉励那些默默在做自主可控的核心技术企业们。