SOPHON BM1684芯片解码性能以及支持的文件格式

1. BM1684芯片的编解码性能数据

BM1684有4个VPU硬核和4个JPU硬核,具体视频和图片的编解码的速度与实际情况有关,要以实测为准。

视频解码的速度与输入视频码流的格式有很大关系,不同复杂度的码流的解码速度有比较大的波动,比如码率、GOP结构,分辨率等,都会影响到具体的测试结果。一般来说,针对视频监控应用场景,BM1684产品单芯片可以支持到32路HD高清实时解码。码率和GOP结构对解码速度的影响因具体情况而异,需要实测;分辨率对于解码帧率的影响,可以按照比例来换算。

视频编码的速度与编码的配置参数有很大关系,不同的编码配置下,即使相同的视频内容,编码速度也不是完全相同的。一般来说,BM1684产品单芯片最高可以支持到2路HD高清实时编码。

具体参数
视频解码 H.264/H.265:1080P @960fps
视频解码格式 CIF / D1 / 720P / 1080P / 4K(3840×2160) / 8K(8192×4096) / 8192x8192
视频编码 1080P@50fps
视频编码格式 CIF / D1 / 720P / 1080P / 4K(3840×2160)
图片编解码 SoC: 600 fps (yuv420@1080p) ,PCIe: 700 fps (yuv420@1080p)
图片编解码分辨率 最大分辨率32768 x 32768

2. BM1684解码性能对于H264/H265有差别吗?如果调整码率的话,最多可以解多少路呢?有没有对应的数据参考?

H264和H265是解码路数相同的。

码率对解码帧率会有影响,这个变化就需要实测,BM1684解码能达到960fps是针对监控码流而言的,这类监控码流没有B帧,场景波动较小,码率基本在2~4Mbps。如果是电影或者其他码率很高的,比如10Mbps,20Mbps甚至更多,是会有明显影响的,具体多大这个需要实测。

分辨率对于解码帧率的影响,是可以按照比例来换算的。960fps是针对1920x1080 HD分辨率而言的。

3. 是否可以通过抽帧来提高BM1684的解码路数

Sophon OpenCV中提供的抽帧,是在解码出来的结果中做的,并不是只解I/P帧的抽帧概念。这里的抽帧解码主要是保证出来帧数的均匀,使得后续的分析处理是等间隔的进行,这是为后续模型分析比较复杂的时候,不能达到每帧都检测而设计的解决方案,但并不能达到增加解码路数的效果。

不提供只解I/P帧的抽帧功能的原因:如果只解I/P帧的话,抽帧的间隔就完全取决于码流的编码结构,这样是比较难控制住性能,比如监控码流中的没有B帧,那其实就相当于没有抽帧了。如果客户可以控制编码端,那更切合实际的做法是直接降低编码端的编码帧率,比如降到15fps,那样解码路数就可以直接 提升;反之,如果客户没有办法控制编码端,那么同样的,只解IP帧的抽帧方式就也无法达到增加解码路数的效果。

4. BM1684是否支持avi, f4v, mov, 3gp, mp4, ts, asf, flv, mkv封装格式的H264/H265视频解析?

BM1684使用ffmpeg对这些封装格式进行支持,ffmpeg支持的BM1684也支持。经查,这些封装格式ffmpeg都是支持的。但是封装格式对于H265/264的支持,取决于该封装格式的标准定义,比如flv标准中对H265就没有支持,目前国内的都是自己扩展的。

5. BM1684是否支持png, jpg, bmp, jpeg等图像格式

jpg/jpeg格式除了有jpeg2000外,自身标准还有很多档次,我们采用软硬结合的方式对其进行支持。对jpeg baseline的除了极少部分外,都用硬件加速支持,其他的jpeg/jpg/bmp/png采用软件加速的方式进行支持。主要的接口有opencv/ffmpeg库

6. BM1684编解码能同时支持32路解码和2路编码吗?内存大小和内存带宽会不会成为瓶颈?

编解码是不同的硬件单元, 可以同时支持。按照目前的内存布局,32+2应该就在内存带宽的临界位置。

在 PCIe 板卡下,视频内存有 3G,一般来说支持 32 路甚至更多的路数都可以。

但在 SoC 模式下,视频内存的默认配置是 2G(另外的给VPP使用),正常使用的话支持 16 路是足够的,但要支持 32 路视频解码时需要在应用层面上仔细设计,不能有任何的浪费。

7. BM1684解码会占用多少内存?使用vpp进行图像处理,最大可能会消耗多少内存?

解码过程的内存占用与码流格式、压缩率、码率有关,需以实测为准。
VPP模块本身是没有内存积累的,内存就是一张输入图像和一张输出图像空间。

8. SOPHON BM168x芯片如何查看vpu/jpu的内存、使用率等状态

在pcie模式下,可以用下面的方法查看:

cat /proc/bmsophon/card0/bmsophon0/media
cat /proc/bmsophon/card0/bmsophon0/jpu

在soc模式下,可以用下面的方法查看:

cat /proc/vpuinfo
cat /proc/jpuinfo

9. SOPHON BM1684解码过程优化内存使用空间:视频支持32路甚至更多的时候,报视频内存不够使用

在PCIE板卡下,视频内存有3G,一般来说支持32路甚至更多的路数都绰绰有余。但在SoC模式下,视频内存的默认配置是2G,正常使用在16路是绰绰有余的,但在32路视频需要在应用层面上仔细设计,不能有任何的浪费。
如果解码使用的是FFMPEG框架,首先保证视频输出格式使用压缩格式,即output_format 101。Opencv框架的话,内部已经默认使用压缩格式了;
其次如果应用在获取到解码输出avFrame后,并不是直接压入队列,而是转换到RGB或者非压缩数据后再缓存的话,可以用av_dict_set设置extra_frame_buffer_num为1(默认为5)。Opencv内部在最新版本中会默认优化。
最后,如果以上优化过后,仍然不够的话,在SoC模式下可以考虑更改dtb设置,给视频挪用分配更多的内存,当然相应的,其他模块就要相应的减少内存。这个要从系统角度去调配。

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...