ECS 云游戏实践项目部署

简介: 利用ECS部署云游戏推流端服务节点,实现对外推流。

(原创声明)

  • 表 1 开发环境及服务节点清单说明
云端:Centos 7.9 任务线(推流 + 流管理 + 交互连接管理)
stream_pusher_with_rtsp 抓取云端桌面 + 编码推流至rtsp_server.
rtsp_server 依循rtsp协议负责流分发管理。曾经尝试采用Nginx代理方式,但在该场景下测试rtsp_server时延更占优势。
cgi_server 基于socket、epoll、进程池实现高并发处理,以及与多客户端之间的操作指令交互与消息通信管理。
本地Ubuntu16.04 + Qt 任务线(拉流 + 交互)
stream_player_with_qt 拉取云端视频流,并解码显示;采集本地操作指令并上传云端实现交互。
  • 图 2 本方案各服务节点框架示意图

0-Overview.png

本方案最终实现效果:

  • 表2 客户端时延数据随机测试统计(约为70~100ms)

时延统计.jpg

整体方案设计说明

(1)云端·推流端设计

  • 图 3 推流端中抓屏输入端与输出端【初始化及参数配置】

1-Stream_Pusher-1.png

此处承接上一模块,至此,抓屏解码输入口、编码推流输出口两者均已进入准备就绪状态。

  • 图 4 推流端与流分发管理服务之间【逻辑交互细节流程】

2-Stream_Pusher-2.png

本案至此,已完成在云上推流端的编码推流以及交互接口设计。

此时,云端的码流则将推送至云上流分发及交互管理服务端:rtsp_server以及cgi_server

(2)云端·流分发及并发管理端设计

本节所述的设计内容,将负责本方案中的云上流分发以及与本地客户端之间的连接及交互管理cgi_server

另外,在云服务器上同时运行了一路rtsp_server中转服务。

  • 图 5 云上流分发及并发管理端设计细节流程

3-CGI_server.png

该服务中维护了一组进程池,在父子进程中各自分别维护了一组内核事件表。当有新的拉流请求到来时,主进程将通过典型的轮流选取算法来主动选择某一子进程来为之服务。当选好子进程之后,子进程中找到与父进程之间预先建立好的管道,并通过该管道来实现两者之间的通信。

(3)本地·拉流解码显示及指令交互管理端设计

当根据rtsp协议建立起拉流连接后,循环捕捉码流,并【解码】后触发QT信号通知UI界面作实时更新显示。

  • 图 6 客户端设计细节流程

4-Stream_Player.png

(4)最终方案效果展示
4-延时-40ms-.png

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
5天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
9天前
|
大数据 云栖大会 云计算
2024云栖大会 预告:磐久服务器技术创新和实践
2024云栖大会 预告:磐久服务器技术创新和实践
2024云栖大会 预告:磐久服务器技术创新和实践
|
6天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
18天前
|
网络协议 网络安全
基于bind软件部署DNS服务器
关于如何使用bind软件部署DNS服务器的教程,包括DNS服务器的类型、基于bind软件的部署步骤、验证DNS服务器可用性的指导,以及如何进行DNS正向解析的实现。
18 2
基于bind软件部署DNS服务器
|
1天前
|
监控 JavaScript Java
部署应用程序到服务器
部署应用程序到服务器
9 3
|
1天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
3天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
19天前
|
存储 关系型数据库 MySQL
使用Docker快速部署Mysql服务器
本文介绍了如何使用Docker快速部署MySQL服务器,包括下载官方MySQL镜像、启动容器、设置密码、连接MySQL服务器以及注意事项。
105 18
|
8天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感