当前位置: 首页 > news >正文

香橙派OrangePI AiPro测评 【运行qt,编解码,xfreeRDP】

实物

为AI而生
在这里插入图片描述
打开盒子

在这里插入图片描述

配置

扛把子的
作为业界首款基于昇腾深度研发的AI开发板,Orange Pi AIpro无论在外观上、性能上还是技术服务支持上都非常优秀。采用昇腾AI技术路线,集成图形处理器,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出,8/20 TOPS AI算力。

其丰富的接口更是赋予了Orange Pi AIpro强大的可拓展性。包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB、两个MIPI摄像头、一个MIPI屏等,预留电池接口。

在操作系统方面,Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求,可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。

开机进入

在这里插入图片描述
作为一个AI产品,必须有一个人机交互的界面才行。大家都在跑算法,于是我就开始进行整理着手整理搭建Qt的环境。

1、下载源码

wget https://download.qt.io/archive/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz

在这里插入图片描述
待下载完成,将源码包拷贝到/opt/目录下
依次执行命令
cd /opt
sudo mkdir qt
mv qt-everywhere-src-5.12.12.tar.xz qt
cd qt
tar -xf qt-everywhere-src-5.12.12.tar.xz
cd qt-everywhere-src-5.12.12。

接下来需要执行配置configure的的操作,因为执行的过程中出现了很多其他的问题,所以这里就把配置文件进行整理,方便后面是使用,配置文件如下:

./configure --prefix=/home/qt  -opensource  -shared  -static  -compile-examples  -xcb

这个选项关系到界面能否正常显示出来。
等待一个执行完成。
在这里插入图片描述
当然处理过程会有些问题了,例如这种
在这里插入图片描述
只需要在报错的文件中进行加入头文件#include 就好了。
执行gmake,等待gmake执行完成后,执行make install. 即可以在对应的目录下面看看安装文件。
在这里插入图片描述
运行程序的时候会出现qt找不到font文件,
在这里插入图片描述

那么需要进行一个操作将windows的font文件夹传过去就好了。

在这里插入图片描述

freeRDP

下载代码:wget https://github.com/FreeRDP/FreeRDP/archive/refs/heads/stable-2.0.zip
安装依赖库:
sudo apt-get install build-essential git-core debhelper cdbs dpkg-dev autotools-dev cmake pkg-config xmlto libssl-dev docbook-xsl xsltproc libxkbfile-dev libx11-dev libwayland-dev libxrandr-dev libxi-dev libxrender-dev libxext-dev libxinerama-dev libxfixes-dev libxcursor-dev libxv-dev libxdamage-dev libxtst-dev libcups2-dev libpcsclite-dev libasound2-dev libpulse-dev libjpeg-dev libgsm1-dev libusb-1.0-0-dev libudev-dev libdbus-glib-1-dev uuid-dev libxml2-dev

在这里插入图片描述
然后执行
mkdir build
cd build
cmake …/
make
make install
如图所示
在这里插入图片描述
接下来可以通过他来连接我的windows了。

在这里插入图片描述
从头cpu占用率来看,跑FreeRDP一点问题都没有。

样例测试

切换root用户,到/opt/opi_test_test/下面
如图所示:
在这里插入图片描述

跑一个视频解码程序

需要讲test.mp4文件拷贝到data文件夹下面。
代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>
#include "acllite_dvpp_lite/ImageProc.h"
#include "acllite_dvpp_lite/VideoRead.h"using namespace std;
using namespace acllite;
int main()
{int32_t deviceId = 0;int32_t saveNum = 10;string videoPath = "../data/test.mp4";string outPath = "./out_pic/output";AclLiteResource aclResource(deviceId);bool ret = aclResource.Init();CHECK_RET(ret, LOG_PRINT("[ERROR] InitACLResource failed."); return 1);VideoRead cap(videoPath, deviceId);CHECK_RET(cap.IsOpened(), LOG_PRINT("[ERROR] Open test.mp4 failed."); return NULL);ImageData frame;LOG_PRINT("[INFO] Start to decode...");for(int i=0; i<saveNum; i++) {string outPic = outPath + to_string(i) + ".yuv";ret= cap.Read(frame);if(!ret){break;}SaveBinFile(outPic, frame.data.get(), frame.size);}LOG_PRINT("[INFO] Frame read end.");return 0;
}

执行bash
在这里插入图片描述
接下来看看运行效果
在这里插入图片描述
解码的yuv数据在 out文件夹下面
在这里插入图片描述

跑一个视频编码的程序

将YUV数据拷贝到data文件夹下面

程序代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>
#include "acllite_dvpp_lite/ImageProc.h"
#include "acllite_dvpp_lite/VideoWrite.h"using namespace std;
using namespace acllite;
int main()
{int32_t deviceId = 0;int32_t saveNum = 10;string filePath = "../data/test.yuv";string outFile = "../out/result.h264";uint32_t width = 1920;uint32_t height = 1080;AclLiteResource aclResource(deviceId);bool ret = aclResource.Init();CHECK_RET(ret, LOG_PRINT("[ERROR] InitACLResource failed."); return 1);VideoWrite testWriter(outFile, width, height);CHECK_RET(testWriter.IsOpened(), LOG_PRINT("[ERROR] open %s failed.", outFile.c_str()); return 1);void* image;void* imageInfoBuf;uint32_t imageInfoSize = YUV420SP_SIZE(width,height);CHECK_RET(ReadBinFile(filePath, image, imageInfoSize), LOG_PRINT("[ERROR] ReadBinFile failed."); return NULL);imageInfoBuf = CopyDataToDevice((void *)image, imageInfoSize);ImageData dst(SHARED_PTR_DEV_BUF(imageInfoBuf), imageInfoSize, width, height, PIXEL_FORMAT_YUV_SEMIPLANAR_420);LOG_PRINT("[INFO] Start to encode...");for(int i=0; i<saveNum; i++) {ret = testWriter.Write(dst);CHECK_RET(ret, LOG_PRINT("[ERROR] Write image to h264 failed."); return NULL);}testWriter.Release();LOG_PRINT("[INFO] Frame write end.");return 0;
}

编译运行,在out文件夹下面有个h264文件如下:
在这里插入图片描述

在这里插入图片描述

总结

1、从使用的情况看来,qt可以正常运行,需要多折腾
2、xfreerdp这种应用也可以很流畅的运行。
3、硬解码和编码这块来说没有任何问题,对于桌面的h264数据编解码可以在满足绝大多数的场景。
4、结合qt和xfreerdp这个软件的开发,以及编解码的处理,这款开发板,可以作为桌面级云终端产品的选型,并且性能远远足够使用,在云服务客户端,瘦客户端方面可以进行相关的推广。

http://www.lryc.cn/news/361292.html

相关文章:

  • 重生之我要精通JAVA--第七周笔记
  • MySQL—函数—数值函数(基础)
  • fintuning chatglm3
  • 草台班子啊草台班子:共享电源导致的BUG(供电不足)
  • java递归计算文件夹和文件大小
  • 硬币检测电路设计
  • 3.基础光照
  • Image Search-这是你的图像搜索
  • 对GPT-4o的评价:技术革新与未来展望
  • 【TB作品】msp430f5529单片机,dht22,烟雾传感器
  • uni-app全局弹窗的实现方案
  • Love-Yi情侣网站3.0存在SQL注入漏洞
  • 自然语言处理(NLP)—— 神经网络语言处理
  • SHA256计算原理
  • Mysql | select语句导入csv后再导入excel表格
  • SpringBoot:手动创建应用
  • 【LeetCode】39.组合总和
  • 用JS来控制遥控车(一行代码即可连接, 超简单!)
  • MyBatis-Plus如何优雅的配置多租户及分页
  • 国产操作系统上Vim的详解01--vim基础篇 _ 统信 _ 麒麟 _ 中科方德
  • 如何正确理解事件溯源架构模式?
  • 【漏洞复现】电信网关配置管理系统 rewrite.php 文件上传漏洞
  • 线性调整率:LINE REGULATION详解
  • Workfine默认首页功能详解
  • CSAPP Lab07——Malloc Lab完成思路
  • 简单、免费、无广告的高性能多线程文件下载工具
  • 【退役之重学 SQL】什么是笛卡尔积
  • Vue3禁止 H5 界面放大与缩小功能
  • 上位机图像处理和嵌入式模块部署(f407 mcu中tf卡读写和fatfs挂载)
  • 汽车识别项目