iOS PlayStation 串流 SDK

87 阅读5分钟

www.alltoall.net_未命名_YTDsb1I3Gc.gif

前言

你是否曾经想过在 iPhone 或 iPad 上流畅地串流 PS4/PS5 游戏?虽然索尼官方提供了 PlayStation Remote Play 应用,但功能受限且无法满足深度定制需求。

虽然开源项目 chiaki-ng 为 Android、Windows、macOS 等平台提供了完整的实现,但 iOS 平台却是一片空白。这背后有技术门槛高、编译复杂、平台特性差异大等多重原因。经过深入研究和开发,我基于 chiaki-ng 的核心代码,从零构建了完整的 iOS 端 PS 串流 SDK

  

项目概述

这是一个开源的 iOS 端 PS 串流 SDK,基于 chiaki-ng 核心代码实现,提供了与官方串流应用媲美的完整功能体验。

核心功能特性

🎮 完整的连接管理

  • 智能主机发现:自动扫描局域网内的 PS4/PS5 主机,无需手动输入IP

  • 安全主机注册:通过 PIN 码配对,获取加密密钥,确保连接安全

  • 稳定串流连接:支持多种分辨率和帧率配置

  • 远程唤醒功能:即使主机处于待机状态,也能唤醒并连接

🎯 全面的输入支持

  • 完整按键映射:支持所有 PS 手柄按键

  • 触摸板模拟:完美模拟 PS 手柄触摸板

  • 陀螺仪支持:利用 iOS 设备陀螺仪,实现体感控制

🎬 高质量音视频

  • 多格式视频解码:支持 H.264/H.265编码,最高 1080P 分辨率

  • 低延迟音频:Opus 音频解码,48kHz 立体声,延迟优化至最低

  • HDR 视频支持:完整支持 HDR 视频流,色彩还原准确

💫 沉浸式体验

  • 体感反馈:接收并处理主机的振动数据,可在 iOS 设备上实现触觉反馈

基于 chiaki-ng 的成熟方案

项目基于 chiaki-ng 的核心 C/C++ 代码构建,这是一个经过大量用户验证的成熟开源方案。通过 Objective-C++ 桥接层,我们将 chiaki-ng 的强大功能完整移植到 iOS 平台。

核心技术栈

  • FFmpeg:业界领先的视频解码库,支持 H.264/H.265 硬件加速

  • SDL2:跨平台音频播放框架,提供低延迟音频输出

  • Opus:高效的音频编解码,专为实时流媒体优化

  • OpenSSL:企业级加密通信,确保数据传输安全

  • libyuv:高性能视频格式转换,优化 iOS 渲染性能

  • jerasure/gf-complete:前向纠错技术,提升网络波动下的稳定性

  • miniupnpc:UPnP 网络穿透,支持复杂网络环境

  • nanopb:轻量级 Protocol Buffers,高效协议解析

  • json-c:JSON 数据解析

  • curl:HTTP 网络请求

核心功能实现

基于 chiaki-ng 的核心代码,我们实现了完整的 iOS 端 PS 串流功能。以下是各个模块的功能特性:

1. 智能主机发现

通过 UDP 广播自动扫描局域网内的 PS4/PS5 主机,无需手动输入 IP 地址。系统会自动检测 WiFi 连接状态,解析主机信息(IP 地址、主机类型、设备名称等)。

2. 安全主机注册

采用 PIN 码配对机制,与主机建立安全连接并获取加密密钥。注册成功后,系统会保存主机的 MAC 地址、昵称等关键信息,并生成用于后续连接认证的密钥。这些密钥经过 Base64 编码,确保连接安全性。

3. 稳定串流连接

连接功能是整个 SDK 的核心,集成了视频解码、音频播放、手柄控制等多个模块。支持灵活的参数配置:

  • 分辨率:720p、1080p等多种选项

  • 码率:可自定义码率,适应不同网络环境

  • 帧率:30fps、60fps 可选

  • 编码格式:H.264 、H.265 或 H.265_HDR 

连接过程中提供完整的回调机制,包括连接结果、视频帧、音频帧和体感反馈数据,让上层应用可以完全掌控连接状态。

4. 高质量视频解码

使用 FFmpeg 进行视频解码,支持 H.264 和 H.265 两种编码格式。解码后的视频帧通过 libswscale 进行像素格式转换,创建 iOS 原生的 CVPixelBufferRef,并最终封装为 CMSampleBufferRef 供上层渲染。完整支持 HDR 视频流,色彩还原准确,画面质量与官方应用相当。

5. 低延迟音频播放

采用 Opus 解码器进行音频解码,SDL2 提供低延迟音频播放。音频格式为 48kHz、16-bit PCM、立体声,通过线程安全的缓冲区管理,确保在多线程环境下的稳定播放。系统会自动检测缓冲区状态,在数据不足时填充静音,避免音频断续,保证流畅的游戏体验。

6. 完整手柄控制

支持所有 PS 手柄输入功能:

  • 触摸板模拟:完美模拟 PS 手柄触摸板功能

  • 陀螺仪支持:利用 iOS 设备陀螺仪和加速度计,实现体感控制,适用于需要陀螺仪的游戏

7. 体感反馈处理

完整接收并处理主机的振动反馈数据,可在 iOS 设备上实现触觉反馈效果,增强游戏沉浸感。通过回调机制,上层应用可以根据游戏场景自定义振动反馈。

8. 远程唤醒功能

即使 PS 主机处于待机状态,也可以通过 SDK 唤醒并建立连接,无需手动开机。这对于远程游戏场景非常实用,大大提升了用户体验。

代码

项目代码

最后

如果这份开源代码对你有帮助,请点个赞,点个星星⭐️