香橙派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这个软件的开发,以及编解码的处理,这款开发板,可以作为桌面级云终端产品的选型,并且性能远远足够使用,在云服务客户端,瘦客户端方面可以进行相关的推广。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/674364.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库系列之MySQL数据库Varchar类型尾部空值问题

背景&#xff1a;研发人员在执行SQL语句“select xx from tb where c1’aaa ’”查询时&#xff0c;发现并不能只查询出’aaa ’这样的字符串&#xff0c;而是把所有’aaa’这样的查出来。首先不管开发人员在插入数据的时候有没有进行去掉首尾字符串的处理&#xff0c;在MySQL …

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask flyfish Word-level Language Modeling using RNN and Transformer word_language_model PyTorch 提供的 word_language_model 示例展示了如何使用循环神经网络RNN(GRU或LSTM)和 Transforme…

开源大模型框架概览3.1 TensorFlow与Keras3.1.1 TensorFlow简介

1.背景介绍 3.1 TensorFlow与Keras TensorFlow是Google Brain team在2015年发布的一个开源库&#xff0c;支持large-scale machine learning and deep neural networks。Keras是Python neural network library&#xff0c;它最初是由Franois Chollet开发的&#xff0c;并于20…

传统IT运维方式在数字化转型和业务扩展背景下面临哪些挑战?

近年来&#xff0c;IT部门的运维人员面对不断涌现的新兴技术和架构转型的要求&#xff0c;如企业上云中台互联网、分布式、容器化、双中心双活&#xff0c;大数据、人工智能的应用等等。随着传统企业把更多的业务向数字化转型&#xff0c;传统的IT运维方式在数字化转型和业务扩…

小程序抓包详细教程

小程序抓包详细教程 前言&#xff1a;关于小程序抓包一直想写出一个比较详细的教程 实验设备&#xff1a; ​ 微信: https://windows.weixin.qq.com/?langzh_CN ​ Proxifier&#xff1a;https://www.proxifier.com/download/ (需要挂梯子访问下载) ​ burpsuite&#xff…

电源滤波器怎么选怎么用1

电源滤波器怎么选怎么用 第一步第二步第三步第四步 很多人不懂得选型&#xff0c;都是买一大堆在现场直接挨个挨个测试&#xff0c;哪一个是通过了就算哪一个。是的我也是这样子搞得。那如何选择最优、最经济、最实用、最有效的滤波器呢&#xff1f;选择电源滤波器的过程有这么…

BioPorto胰高血糖素样肽-1抗体(GLP-1)

丹麦BioPorto Diadnostics公司致力于提供世界领先的GLP-1抗体。基于结合GLP-1位点的不同&#xff0c;他们筛选出了不同的抗GLP-1抗体。有的抗体可以同时结合GLP-1的活性形式和非活性形式&#xff0c;有的专门结合生物活性形式的GLP-1。在开发和检测GLP-1相关治疗的过程中&#…

初探Flask:Pycharm社区版创建Flask项目

文章目录 一、创建工程二、引入Flask库1.使用命令行安装Flask2.在PyCharm中安装Flask 三、创建Flask框架基本文件四、运行项目 本文将带您一步步创建一个简单的Flask项目&#xff0c;包括设置Python环境、安装Flask库以及创建基本的项目结构。 一、创建工程 首先&#xff0c;确…

Kibana的使用

在学习elasticsearch时&#xff0c;可以使用Kibana自带的开发工具&#xff0c;来提高效率&#xff0c; 浏览器打开Kibana,在左侧菜单栏中找到Dev Tools 该工具提供代码提示和代码格式化功能&#xff0c;非常有用&#xff0c;

SSMP整合案例第七步 前后端业务异常消息统一处理

异常消息处理 我们当前的增删改查基本完成 我们当前的情况是在理想状态下完成的 但是实际开发中我们要抛出异常 业务在进行处理的时候 数据格式就是这样 前端拿到的信息我们应该去处理 前端如何去处理得去斟酌 即使前端出现了异常 我们也要让返回的异常信息让前端成功读…

SpringBoot——整合Servlet的三大组件:监听器(Listener)

目录 监听器&#xff08;Listener&#xff09; 项目总结 MyRequestListener自定义监听器 WelcomController控制器 SpringbootListenerApplication启动类 在开发SpringBoot项目时&#xff0c;开发人员经常需要对HTTP请求进行拦截和处理&#xff0c;以实现诸如身份验证、授…

室内外无缝定位技术:连接虚拟与现实的新桥梁

随着科技的快速发展&#xff0c;人们对于位置信息的精确度和实时性要求日益提高。在这样一个背景下&#xff0c;室内外无缝定位技术应运而生&#xff0c;成为连接虚拟与现实世界的关键桥梁。它不仅为人们提供了更加便捷、高效的生活体验&#xff0c;还推动了物联网、智能制造等…

家用厨房安全新篇章:煤气安全阀结构与校验知识普及

在家用厨房中&#xff0c;煤气作为主要的烹饪能源&#xff0c;其安全性至关重要。 煤气安全阀作为防止煤气泄露的关键设备&#xff0c;其结构特点、作用解析、定期校验的重要性以及泄露风险的防范等方面&#xff0c;都是我们必须深入了解和掌握的知识。 首先&#xff0c;我们…

Java1.8 vue版家政服务系统成品源码 家政管家系统源码 家政月嫂系统源码 家政保洁系统源码 在线派单,师傅入驻全套商业源码

Java1.8 vue版家政服务系统成品源码 家政管家系统源码 家政月嫂系统源码 家政保洁系统源码 在线派单&#xff0c;师傅入驻全套商业源码 一、系统定义 家政上门服务系统是一种利用互联网技术&#xff0c;将家政服务需求与专业的家政服务人员进行高效匹配的平台。它允许用户通过…

leetcode第263题:丑数

丑数的因子只能是2,3,5。但是可能有多个2&#xff0c;多个3&#xff0c;多个5.因此需要循环地除以2、3、5. public class Solution {public bool IsUgly(int n) {if (n < 0) {return false;}int[] factors {2, 3, 5};for ( int i0;i<3;i) {int factorfactors[i];while …

ClickHouse如何整合数据源:MySQL、HDFS...

一、ClickHouse数据源 ClickHouse 作为一个强大的列式数据库管理系统&#xff0c;支持多种数据源&#xff0c;使得用户能够方便地将数据导入 ClickHouse 进行存储和分析。以下是常见的 ClickHouse 数据源&#xff1a; 外部数据源 HDFS&#xff1a; 支持从 Hadoop 分布式文件系…

音视频开发15 FFmpeg FLV封装格式分析

FLV(Flash Video)简介 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式&#xff0c;由于其封装后的⾳视频⽂件体积⼩、封装简单等特点&#xff0c;⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤ FLV格式封装的⽂件后缀为.flv。 FLV封装格式的组成 FLV封装…

长三角Ai行业盛会:2024南京人工智能展会(南京智博会)

在长三角地区&#xff0c;南京这座古老而现代的都市&#xff0c;近年来在人工智能产业发展方面取得了令人瞩目的成绩。作为一座拥有深厚历史底蕴和独特文化魅力的城市&#xff0c;南京在科技创新领域同样展现出非凡的活力与实力。特别是在人工智能领域&#xff0c;南京的崛起已…

Spring Cloud:构建高可用分布式系统的利器

摘要&#xff1a;本文将介绍Spring Cloud&#xff0c;一个基于Spring Boot的开源微服务架构工具集。我们将探讨Spring Cloud的核心组件、特性以及如何使用Spring Cloud构建高可用、分布式系统。通过本文&#xff0c;读者将了解到Spring Cloud在实现微服务架构中的应用和优势。 …

STM8单片机变频器设计

变频调速技术是现代电力传动技术的重要发展方向,而作为变频调速系统的核心—变频器的性能也越来越成为调速性能优劣的决定因素,除了变频器本身制造工艺的“先天”条件外,对变频器采用什么样的控制方式也是非常重要的。随着电力电子技术、微电子技术、计算机网络等高新技术的…