巧用 G5g 畅游Android流媒体游戏

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


巧用 G5g 畅游Android流媒体游戏

概览

Amazon EC2 G5g 实例由 AWS Graviton2 处理器提供支持,并配备 NVIDIA T4G Tensor Core GPU,可为 Android 游戏流媒体等图形工作负载提供 Amazon EC2 中最佳的性价比。它们是第一个具有 GPU 加速功能的基于 Arm 的实例。

借助 G5g 实例,游戏流媒体客户可以在基于 Arm 的实例上本地运行 Android 游戏,对渲染的图形进行编码,并通过网络将游戏流式传输到移动设备。

在这篇博客中,我们将在 G5g 实例上通过 Anbox Cloud Appliance 设置 Android 环境,通过 Anbox Cloud API 构建 Android 流媒体游戏应用程序,最后在我们的手机上通过 Firefox 浏览器玩游戏!

架构解析

在这里插入图片描述

从上图中,我们可以看到此博客中设置的演示示例架构。该架构可以简单分为两部分,左边是客户端:手机上支持WebRTC的任何浏览器,右边是基于G5g实例的服务器。让我们在服务器中了解更多细节,我们首先需要在 G5g 实例上通过 Anbox Cloud Appliance 设置 Android 环境,然后我们需要设置一个 Web 服务器处理来自客户端的请求,之后配置 Android 应用程序并通过 Anbox Cloud 启动应用程序接口。当Web服务器接受客户端的请求时,它会将请求转发给应用服务器,应用服务器将与Anbox流网关和Anbox Cloud API通信以启动Android容器,Android应用程序将托管在容器中并将游戏流传回给客户。

动手实践

Step 1

Step 1 在 G5g 实例上启动 Anbox Cloud Appliance

首先,您需要一个 Ubuntu SSO 帐户。如果您还没有,请在此处创建。

我们可以通过 AWS Marketplace 安装 Anbox Cloud Appliance。前往 AWS Marketplace 然后购买 Anbox Cloud Appliance 的订阅,因为我们计划将其安装在基于 Graviton 处理器的 G5g 实例上,请前往选择 Arm 变体。

在这里插入图片描述

在这篇博客中,我们在 Instance type 部分选择 G5g.8xlarge,选择密钥对,将网络设置保留为默认设置,如下添加存储,

  • 至少 50 GB 的根磁盘(必需)
  • 至少100GB的额外EBS卷(强烈推荐)

我们推荐至少 100 GB 的原因是我选择作为博客演示的游戏是 Genshin Impact,它有一个相当大的游戏包,几乎在 50GB 左右。

最后,启动实例并等待它变为运行状态,然后我们可以SSH到实例并配置Android环境。

Step 2

Step 2 在G5g上搭建Android环境

为了最好地确保我们的 RPM 和 Debian 软件包存储库的安全性和可靠性,我们首先更新了 CUDA Linux GPG 存储库密钥

$ sudo apt-key del 7fa2af80
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/sbsa/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb

由于Anbox Cloud中的Android环境运行在LXD容器环境中,因此在设置Android之前,将LXD刷新到最新版本。

$ sudo snap refresh --channel=5.0/stable lxd

通过输入以下命令调用 Anbox 云设备的初始化过程:\

$ sudo anbox-cloud-appliance init

只需保留几个问题作为默认答案,最后,您可以在 https://$(ec2_public_DNS_name) 查看状态网页以获取进度信息。\

在这里插入图片描述

等待初始化过程完成,然后注册之前创建的 Ubuntu SSO 帐户,输出将显示 Android 环境仪表板地址。

$ anbox-cloud-appliance dashboard register <your Ubuntu SSO email address>

Step 3

Step 3 通过 Anbox Cloud API 构建 Android 流媒体游戏应用程序

我们参考 Anbox Cloud 存储库来构建游戏。首先,下载源代码:

$ git clone https://github.com/anbox-cloud/cloud-gaming-demo.git

构建游戏门户的Web UI,Web UI是用Flutter构建的,所以我们需要安装Flutter然后部署它。

$ sudo snap install flutter --classic
$ cd ui && flutter build web
$ mkdir -p backend/service/static
$ cp -av ui/build/web/* backend/service/static

接下来是构建后端服务,用于服务 Web UI 请求并与 Anbox Stream Gateway 交互以通过 Anbox Cloud API 创建游戏应用程序。从安装依赖项开始:

$ sudo apt-get install python3-pip
$ sudo pip3 install virtualenv
$ cd backend && virtualenv venv

然后我们需要准备后端服务访问Anbox Stream Gateway的配置文件,配置文件中有两个参数,gateway-URL和gateway-token。可以从以下命令获取网关令牌:

$ anbox-cloud-appliance gateway account create <account-name>

创建一个名为 config.yaml 的文件,其中包含这两个配置项:

gateway-url: https:// <EC2 public DNS name>
gateway-token: <gateway_token>

然后将以下行添加到 backend/venv/bin/ 目录中的 activate hook,以便后端服务可以在其启动时读取 config.yaml:

$ export CONFIG_PATH=<path_to_config_yaml>

现在我们可以启动将在 TCP 端口 8002 提供服务的后端服务:

$ cd backend && ./run.sh

在接下来的步骤中,我们将从互联网上下载一个免费的游戏来演示,并通过 Anbox Cloud API 构建它,我们需要一个可用的 Android APK 和一个配置文件。

在HOME目录下创建文件夹,并在文件夹中创建manifest.yaml文件。在本博客中,我们选择将以下内容添加到文件中,您可以参考此链接了解更多详细信息.

name: genshin
instance-type: g10.3
resources:
  cpus: 10
  memory: 25GB
  disk-size: 50GB
  gpu-slots: 15
features: ["enable_virtual_keyboard"]

我们还需要准备一个Android APK,记得选择Graviton原生支持的arm64-v8a架构的APK。在这篇博客中,我们从网上下载了一款免费的安卓游戏,名为《原神》,一款由米哈游开发发行的动作角色扮演游戏。将 APK 下载到文件夹中并将其重命名为 app.apk。总体而言,游戏文件夹的最终布局应如下所示:

.
├── app.apk
└── manifest.yaml

从文件夹中运行以下命令以创建应用程序

$ amc application create  .

通过使用以下命令监视应用程序创建的状态,等待应用程序更改为就绪状态:

$ amc application ls

然后我们可以继续编辑和重建 web UI 以显示游戏如下:

  • 更新 ui/lib/homepage.dart 文件中定义的 gameids 变量以包含游戏名称(如清单文件中所声明)。
  • 向lib/api/application.dart文件中定义的静态appNameMap和appDesMap变量插入新的key/value对
  • 提供游戏截图(jpeg格式),重命名为.jpeg,放入ui/lib/assets目录。

现在您可以重建网页界面,将 ui/build/web 文件夹中的内容复制到 backend/service/static 目录,然后刷新网页即可获得您的游戏!

Step 4

Step 4 启动游戏

拿出你的手机,打开Firefox浏览器或任何支持webRTC的浏览器,输入G5g实例的8002端口的公共DNS名称,然后你会看到游戏入口是这样的:

在这里插入图片描述

点击立即开始游戏按钮,稍等片刻在服务器端进行应用程序设置,然后开始游戏吧!

在这里插入图片描述

结论

G5g 是首个在大型云端采用 GPU 加速的基于 Arm 的实例,在 Amazon EC2 中为 Android 游戏流式传输提供最佳性价比。利用 G5g 实例,Android 游戏开发人员可以原生运行基于 Arm 的 GPU 实例,编码渲染的图形,通过网络将游戏流式传输到移动设备。这样可以帮助简化开发工作,降低每个流每小时成本高达 30%。在这篇博客中,我们在原生支持 Arm64 架构的 G5g 实例上构建了一个Android 游戏的演示,借助GPU加速功能,我们可以尝试更多需要大规模图形渲染需求的游戏,让 Android 流媒体游戏的普及成为可能。

详细体验:

亚马逊云科技:https://aws.amazon.com/cn/free/?sc_channel=seo&sc_campaign=blog1157


🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


在这里插入图片描述

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

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

相关文章

了解DC电源模块的基本参数及选择方法

BOSHIDA 了解DC电源模块的基本参数及选择方法 DC电源模块是一种用来提供稳定直流电源的设备&#xff0c;常被应用在电子产品测试、实验室设备等领域。了解DC电源模块的基本参数和选择方法有助于正确选择和使用合适的模块。 1. 输出电压范围&#xff1a;DC电源模块通常有固定的…

linux(ubuntu)中crontab定时器命令详解 以及windows中定时器

linux&#xff08;ubuntu&#xff09;中crontab定时器命令详解 crontab 是一个用于创建、编辑和管理用户的定时任务的命令&#xff0c;它可以让用户在指定的时间自动执行指定的命令或脚本。 基本语法 -e&#xff1a;编辑用户的 crontab 文件&#xff1b;-l&#xff1a;列出用…

dubbo与seata集成

1.seata是什么? Seata 是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 2.seata的注解 GlobalTransactional&#xff1a;全局事务注解&#xff0c;添加了以后可实现分布式事务的回滚和提交&#xff0c;用法与spring…

计算机科学速成课【学习笔记】(4)——二进制

本集课程B站链接&#xff1a; 4. 二进制-Representing Numbers and Letters with Binary_BiliBili_哔哩哔哩_bilibili4. 二进制-Representing Numbers and Letters with Binary_BiliBili是【计算机科学速成课】[40集全/精校] - Crash Course Computer Science的第4集视频&…

Linux-shell简单学习

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 其他…

基于 SpringBoot + vue 的医院管理系统(含源码,数据库,文档)

基于 SpringBoot vue 的医院管理系统 †前后端分离思想&#xff0c;这个系统简直太棒了&#xff01;屯 光这个系统采用了 前后端分离思想&#xff0c;后端使用 SpringBoot和 SpringMVC框架&#xff0c;让代码更高效&#xff0c;更易于维护。前端则使用了 vue js 和ElementU…

极智AI | 谈谈通义舞王背后的技术Animate Anyone 让任何人动起来

欢迎关注我的公众号 [极智视界],获取我的更多技术分享 大家好,我是极智视界,本文分享了 谈谈通义舞王背后的技术Animate Anyone 让任何人动起来。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 来吧,让我们…

【C++】十大排序算法

文章目录 十大排序算法插入排序O(n^2^)冒泡排序O(n^2^)选择排序O(n^2^)希尔排序——缩小增量排序O(nlogn)快速排序O(nlogn)堆排序O(nlogn)归并排序(nlogn)计数排序O(nk)基数排序O(n*k)桶排序O(nk) 十大排序算法 排序算法的稳定性&#xff1a;在具有多个相同关键字的记录中&…

Jmeter压缩包安装

JMeter安装及配置-Mac 本章要点 前置条件命令行安装压缩包安装 在Mac上安装对应的JMeter工具有两种方式&#xff1a;一种直接借助终端命令行brew进行安装&#xff1b;另外一种和Window电脑一样去JMeter官网下载压缩包安装。 JMeter不需要安装&#xff0c;但是JMeter作为java应用…

基于Springboot生活物资分配系统-计算机毕设 附源码 30174

Springboot生活物资分配系统 目 录 摘要 1 绪论 1.1目的与意义 1.2研究内容 1.3系统开发技术的特色 1.4springboot框架 2 1.5论文结构与章节安排 3 2 生活物资分配系统分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1数据增加流程 5 2.3.2数据修改流程 5 2.3.3数据删除…

第9章 正则表达式

学习目标 熟悉正则表达式,能够说出正则表达式的概念和作用 掌握正则表达式的创建,能够使用两种方式创建正则表达式 掌握正则表达式的使用,能够使用正则表达式进行字符串匹配 掌握正则表达式中元字符的使用,能够根据需求选择合适的元字符 掌握正则表达式中模式修饰符的使用,…

python_数据可视化_pandas_导入excel数据

目录 1.1导入库 1.2读取excel文件 1.3读取excel&#xff0c;指定sheet2工作表 1.4指定行索引 1.5指定列索引 1.6指定导入列 案例速览&#xff1a; 1.1导入库 import pandas as pd 1.2读取excel文件 pd.read_excel(文件路径) data pd.read_excel(D:/desktop/TestExcel…

Mysql判断一个表中的数据是否在另一个表存在

方式一&#xff1a; 判断A表中有多少条数据在B表中【存在】,并且显示这些数据–EXISTS语句 select A.ID, A.NAME from 表A where EXISTS(select * from 表B where A.IDB.ID) 判断A表中有多少条数据在B表中【不存在】&#xff0c;并且显示这些数据–NOT EXISTS语句 select …

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第四天-Linux管道练习题(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

针对远程40G网络的DWDM解决方案

目前&#xff0c;用户和企业积累的数据量非常巨大&#xff0c;并在不断增长。因此&#xff0c;存储和访问这些数据也变得更加苛刻&#xff0c;需要更高的数据容量和更长距离的数据传输。我们的一个客户正在考虑为现有的40G网络添加DWDM系统&#xff0c;作为一种更严肃的未来技术…

【论文阅读笔记】Stable View Synthesis 和 Enhanced Stable View Synthesis

目录 Stable View Synthesis摘要引言 Enhanced Stable View Synthesis 从Mip-NeRF360的对比实验中找到的两篇文献&#xff0c;使用了卷积神经网络进行渲染和新视角合成&#xff0c;特此记录一下 ToDo Stable View Synthesis paper&#xff1a;https://readpaper.com/pdf-ann…

SLF4J Spring Boot日志框架

JAVA日志框架 JAVA有好多优秀的日志框架&#xff0c;比如log4j、log4j2、logback、JUL&#xff08;java.util.logging&#xff09;、JCL&#xff08;JAVA Common Logging&#xff09;等等&#xff0c;logback是后起之秀&#xff0c;是Spring Boot默认日志框架。 今天文章的目…

Cost S-curve

成本S曲线 Cost S-curve 每个月成本预算&#xff0c;柱形图 每个月成本累积&#xff08;合计&#xff09;&#xff1a;成本S曲线&#xff0c;折线图&#xff0c;但是肯定都是上升的 echarts图表&#xff1a;

芯课堂 | 一种温度修调方法

一种温度修调方法 本次介绍一种温度修调方法&#xff0c;所述温度修调方法包括获取正温度系数的电流和负温度系数的电流&#xff1b;对获取到的正温度系数的电流和负温度系统的电流进行权重处理&#xff0c;得到补偿电流&#xff1b;基于预设温度特性模型&#xff0c;将补偿电流…

SD-WAN组网:实现跨境连接的智能选择

在数字化时代&#xff0c;企业面临着越来越多的挑战&#xff0c;其中之一是构建高效、安全、可靠的跨境网络连接。SD-WAN&#xff08;Software-Defined Wide Area Network&#xff09;作为一种创新的网络技术&#xff0c;通过应用软件定义的方式&#xff0c;为企业提供了一种智…