前言
你是否曾经想过在 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 唤醒并建立连接,无需手动开机。这对于远程游戏场景非常实用,大大提升了用户体验。
代码
最后
如果这份开源代码对你有帮助,请点个赞,点个星星⭐️