NVIDIA Jetson nano可以处理4K相机吗?来验证编码性能吧(中)
继续上文NVIDIA Jetson nano可以处理4K相机吗?来验证编码性能吧(上)
验证编码性能
从这里,我们将验证编码性能。这次,我们将通过将4K相机拍摄的视频保存到SD卡中进行验证。Jetson nano不支持ffmpeg,因此请使用gstreamer。这个gstreamer非常神秘,花了两个星期来understand
至于验证内容,对于全高清(1920 x 1080)和4K(3840 x 2160)视频,使用h264和h265代码,并使用硬件编码器和软件编码器(CPU)。比较情况。
对于4K,我们将比较使用Jetson nano中安装的硬件jpeg解码器(NVJPG)的情况和不使用它解码照相机拍摄的MJPG视频的情况。
使用“ JTOP”可以测量CPU使用率,频率,温度和硬件编码器使用率。
全高清视频测量结果
在开始使用4K视频之前,让我们从全高清视频的测量结果开始。
①h264编码性能
■全高清(1920 x 1080)x264(软件编码:1个CPU)
它是使用Jetson nano的CPU(1个)进行x264视频压缩(软件编码)的测量结果。结果是fps = 4.4,这是不实际的。
fps = 4.384 CPU = 100%,14%,12%,19%
$gst-launch-1.0 -e v4l2src device=/dev/video1 ! 'image/jpeg,width=1920,height=1080,framerate=30/1' ! jpegdec ! queue ! videoconvert ! queue ! x264enc threads=1 ! h264parse ! qtmux ! filesink location=FHD_h264SW1x.mp4 -e
$mediainfo FHD_h264SW1x.mp4
---省略---
Bit rate : 258 kb/s
Nominal bit rate : 2 048 kb/s
Maximum bit rate : 2 097 kb/s
---省略---
Frame rate : 4.384 FPS
Minimum frame rate : 0.455 FPS
Maximum frame rate : 31.250 FPS
(左右滑动可以看见完整代码)
■全高清(1920 x 1080)x264(软件编码:4 CPU)
这是完全使用Jetson nano的CPU(4个)的x264视频压缩(软件编码)的测量结果。结果是fps = 8.2。它大约是一个CPU的两倍,但不是四倍。
fps = 8.229
CPU = 100%,100%,98%,100%
$gst-launch-1.0 -e v4l2src device=/dev/video1 ! 'image/jpeg,width=1920,height=1080,framerate=30/1' ! jpegdec ! queue ! videoconvert ! queue ! x264enc threads=4 ! h264parse ! qtmux ! filesink location=FHD_h264SW4x.mp4 -e
$mediainfo FHD_h264SW4x.mp4
---省略---
Bit rate : 467 kb/s
Nominal bit rate : 2 048 kb/s
Maximum bit rate : 2 097 kb/s
---省略---
Frame rate : 8.229 FPS
Minimum frame rate : 0.579 FPS
Maximum frame rate : 34.091 FPS
(左右滑动可以看见完整代码)
■全高清(1920 x 1080)nvv4l2h264enc(硬件编码)
这是使用安装在Jetson nano中的硬件编码器进行的h264视频压缩的测量结果。硬件编码有效,几乎不使用CPU,并且几乎输出 30fps
192MHz也显示在JTOP屏幕左下方的“ NVENC”列中,您还可以确认您正在使用硬件编码器。
fps = 29.768 CPU = 73%,2%,0%,9%
$gst-launch-1.0 -e v4l2src device=/dev/video1 ! 'image/jpeg,width=1920,height=1080,framerate=30/1' ! jpegdec ! nvvidconv ! nvv4l2h264enc ! h264parse ! queue2 ! qtmux ! filesink location=FHD_h264HW.mp4 -e
$mediainfo FHD_h264HW.mp4
---省略---
Bit rate : 3 960 kb/s
Maximum bit rate : 21.9 Mb/s
---省略---
Frame rate : 29.768 FPS
Minimum frame rate : 2.688 FPS
Maximum frame rate : 31.579 FPS
(左右滑动可以看见完整代码)
②h265编码性能
■全高清(1920 x 1080)x265(软件编码:1 CPU)
这是使用Jetson nano CPU(1)进行x265视频压缩(软件编码)的测量结果。一个CPU带来好运,结果是fps = 2.7。另外,x265没有多线程选项,因此这是限制。好吧,这没用。
fps = 2.479 CPU = 14%,10%,16%,100%
$gst-launch-1.0 -e v4l2src device=/dev/video1 ! 'image/jpeg,width=1920,height=1080,framerate=30/1' ! jpegdec ! queue ! videoconvert ! queue ! x265enc ! h265parse ! qtmux ! filesink location=FHD_h265SW.mp4 -e
$mediainfo FHD_h265SW.mp4
---省略---
Bit rate : 114 kb/s
Maximum bit rate : 8 670 kb/s
---省略---
Frame rate : 2.749 FPS
Minimum frame rate : 0.082 FPS
Maximum frame rate : 31.250 FPS
(左右滑动可以看见完整代码)
■全高清(1920 x 1080)nvv4l2h265enc(硬件编码)
接下来是h265的压缩性能。这是使用安装在Jetson nano中的硬件编码器时的测量结果。硬件编码有效,几乎不使用CPU,并且几乎为30fps。如预期!
fps = 29.779 CPU = 75%,5%,5%,8%
$gst-launch-1.0 -e v4l2src device=/dev/video1 ! 'image/jpeg,width=1920,height=1080,framerate=30/1' ! jpegdec ! nvvidconv ! nvv4l2h265enc ! h265parse ! queue2 ! qtmux ! filesink location=FHD_h265HW.mp4 -e
$mediainfo FHD_h265HW.mp4
---省略---
Bit rate : 3 971 kb/s
Maximum bit rate : 24.6 Mb/s
---省略---
Frame rate : 29.779 FPS
Minimum frame rate : 2.688 FPS
Maximum frame rate : 31.579 FPS
(左右滑动可以看见完整代码)
- SpringMVC支持跨域的两种姿势
- SpringMVC返回图片的几种方式
- Redis实现分布式锁相关注意事项
- React Native调用Android相机图库
- SpringMVC之请求参数的获取方式
- 糖大夫--测量流程性能监控自动化方案设计
- ReactNative调用Android原生模块
- jvm调优的工具介绍
- Python时间序列预测案例研究:巴尔的摩年度用水量
- [一对一课程] 之 设计并实现第一个JS模块?
- React Native 使用react-native-image-picker库实现图片上传功能
- 再谈Android动态链接库
- React Native之Permissions权限适配
- React Native项目实战之fetch请求并填充界面
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL复制全解析 Part 8 MySQL Auto-Positioning
- Redis 5.0.8 主从搭建
- Linux 修改网卡名称及mac地址
- MySQL Galera Cluster全解析 Part 10 grastate.dat文件详解
- MySQL MHA部署 Part 7 MHA手动切换测试
- 使用sysbench进行压测 Part2 sysbench语法介绍
- mysqlbinlog命令详解 Part 1-实验环境准备
- mysqlbinlog命令详解 Part 2 -MySQL 事件类型
- mysqlbinlog命令详解 Part 4 -查看行事件具体SQL语句
- mysqlbinlog命令详解 Part 5 通过位置和时间查看日志
- mysqlbinlog命令详解 Part 6 读取远程MySQL服务器日志
- mysqlbinlog命令详解 Part 7 备份二进制日志文件
- mysqlbinlog命令详解 Part 8 指定 Server ID
- mysqlbinlog命令详解 Part 9 MySQL备份策略
- mysqlbinlog命令详解 Part 10 恢复MySQL