
1. 项目缘起与核心定位AnyPS5 这个名字第一次看到的时候我愣了一下。PS5 大家都知道是什么但前面加个 Any意思就很明确了——让任意设备都能变成 PS5 的延伸终端。说白了就是解决一个非常具体的痛点你想在书房用显示器玩、想在客厅用电视玩、想在卧室用平板玩但主机只有一台搬来搬去太麻烦串流方案又各有各的坑。我自己是首发入的 PS5光驱版放在客厅电视柜里。刚开始觉得挺好大屏沉浸感强。但后来有了孩子客厅电视基本被动画片占领晚上想打两把《恶魔之魂》或者《GT7》就得等全家都睡了。试过把主机搬到书房但每次插拔电源、HDMI、网线折腾一次就懒得再动。也试过官方的 Remote Play手机小屏幕玩动作游戏简直是折磨延迟和画质压缩都让人抓狂。AnyPS5 这个项目从名字和定位来看就是冲着这个场景来的。它不是简单的官方串流套壳而是一套完整的、可定制的、跨平台的串流方案。核心目标很明确把 PS5 的画面和声音以尽可能低的延迟、尽可能高的画质推送到你手边的任意屏幕上——不管是 Windows 笔记本、MacBook、Linux 台式机、Android 平板、iPad甚至是一台装了浏览器的旧电脑。这个项目适合谁三类人。第一类是多房间居住、不想搬主机的玩家第二类是对官方 Remote Play 画质和延迟不满意、愿意折腾的技术型玩家第三类是手里有闲置设备旧笔记本、平板、电视盒子想废物利用当串流终端的人。如果你属于这三类中的任何一类AnyPS5 的思路和实现细节都值得你花时间研究。我花了大概两周时间把市面上能查到的串流方案都试了一遍从官方 Remote Play 到各种第三方工具最后基于 AnyPS5 的思路搭了一套自己的方案。下面我把整个设计思路、核心细节、实操过程和踩过的坑完整地分享出来。2. 整体架构设计与方案选型2.1 为什么不用官方 Remote Play官方 Remote Play 最大的问题是封闭。它只支持特定的设备组合画质选项有限延迟优化也做得不够激进。我实测下来在同样的网络环境下官方方案的端到端延迟大概在 60-80ms 左右玩《战神》这种动作游戏弹反时机明显对不上。而且官方方案对 HDR 的支持很有限色彩发灰暗部细节丢失严重。AnyPS5 的思路完全不同。它本质上是一个自建的串流管道核心组件包括采集端从 PS5 获取画面和声音、编码端把原始画面压缩成适合网络传输的流、传输端把流推到目标设备、解码端在目标设备上还原画面和声音。每个环节都可以根据你的硬件条件和网络环境做针对性优化。2.2 采集方案的选择采集是整个链路的第一步也是最关键的一步。PS5 的 HDMI 输出是加密的直接通过软件抓取是不现实的。所以 AnyPS5 的方案里采集必须走硬件路线——也就是 HDMI 采集卡。采集卡的选择有几个关键参数分辨率、刷新率、HDR 支持、环出功能、延迟。我试过三款采集卡从入门到中端都有。入门款只支持 1080p60没有 HDR环出延迟大概 10ms 左右价格便宜但画质上限太低。中端款支持 4K60 环出、1080p120 采集HDR 直通环出延迟控制在 5ms 以内价格大概在入门款的三倍左右。这里有个重要的取舍如果你主要玩 1080p 游戏入门款够用但如果你玩 4K 游戏或者对 HDR 有要求中端款是底线。我最后选的是支持 4K60 HDR 环出的型号采集端输出 1080p60 的流环出口接电视这样电视上还是原汁原味的 4K HDR串流端则是 1080p60兼顾了画质和带宽。注意采集卡的环出功能非常重要。没有环出你就得用 HDMI 分线器多一个环节就多一份延迟和不确定性。环出延迟越低越好最好在 5ms 以内。2.3 编码与传输协议采集卡输出的是未压缩的原始视频流数据量巨大。1080p60 的未压缩视频带宽需求大概在 3Gbps 左右普通千兆网根本扛不住。所以必须编码压缩。AnyPS5 的方案里编码用的是 H.264 或 H.265。H.264 兼容性好几乎所有设备都能硬解H.265 压缩效率更高同画质下带宽需求低 30%-40%但对解码端有要求。我建议优先用 H.265如果目标设备解码能力不足再降级到 H.264。编码器可以用软件编码比如 x264也可以用硬件编码比如 NVENC、QuickSync、AMF。软件编码画质好但 CPU 占用高硬件编码 CPU 占用低但画质略差。我实测下来在 1080p60 这个分辨率下硬件编码的画质损失肉眼几乎不可见但 CPU 占用从 40% 降到了 5% 以下所以强烈推荐硬件编码。传输协议方面AnyPS5 用的是 RTSP 或 SRT。RTSP 延迟低适合局域网SRT 抗丢包能力强适合网络环境不稳定的场景。我家里是千兆有线局域网所以直接用 RTSP端到端延迟可以压到 20ms 以内。2.4 解码端的选择解码端就是你的目标设备。Windows、Mac、Linux 上可以用 VLC 或 MPV 播放 RTSP 流Android 和 iOS 上可以用支持 RTSP 的播放器 App。关键是硬解支持——如果设备支持 H.265 硬解CPU 占用会非常低旧设备也能流畅播放。我试过用一台 2015 年的旧笔记本当终端i5-5200U 的 CPU支持 H.264 硬解但不支持 H.265。用 H.264 编码1080p60 播放流畅CPU 占用大概 15%换成 H.265 就卡成幻灯片。所以编码格式的选择一定要看目标设备的解码能力。3. 核心细节解析与实操要点3.1 采集卡与 PS5 的连接细节PS5 的 HDMI 输出有几个需要注意的地方。首先PS5 默认会协商最高的显示格式如果你的采集卡不支持 4K120PS5 可能会输出 1080p120 或者 4K60。这时候需要在 PS5 的显示设置里手动锁定输出格式避免采集卡和电视之间的协商冲突。其次HDCP 是个大坑。PS5 在播放蓝光电影或者某些流媒体内容时会启用 HDCP采集卡如果检测到 HDCP 信号会直接黑屏。解决办法是买一个 HDCP 剥离器串在 PS5 和采集卡之间。但注意剥离 HDCP 可能涉及版权问题我只在玩自己购买的游戏时使用不涉及任何受保护内容的录制和传播。连接顺序是这样的PS5 → HDCP 剥离器 → 采集卡 → 电视通过采集卡环出。如果采集卡自带环出且支持 HDCP 直通可以省掉剥离器。但很多采集卡的环出会重新加密 HDCP导致电视黑屏所以剥离器有时候是必须的。实操心得连接完成后先在 PS5 里把分辨率锁定到 1080p刷新率锁定到 60Hz关闭 HDR确认采集卡能正常出画面。然后再逐步开启 HDR、提高分辨率每改一次都确认采集端和环出端都正常。这样出问题的时候容易定位。3.2 编码参数的调优编码参数直接决定了画质、延迟和带宽的平衡。我用的编码工具是 FFmpeg参数经过多次调整最终稳定在一套兼顾画质和延迟的配置上。关键参数包括码率1080p60 建议 15-25 Mbps。太低画质糊太高网络扛不住。我实测 20 Mbps 是甜点动作场景没有明显块效应。GOP 长度建议 1-2 秒。GOP 太长随机访问延迟高太短压缩效率低。我用的 60 帧也就是 1 秒。B 帧建议关闭或只用 1-2 个。B 帧会增加编码延迟对串流不友好。预设硬件编码用 fastest 或 fast软件编码用 veryfast。画质损失可接受延迟明显降低。tune用 zerolatency这个预设会关闭一些增加延迟的编码特性。具体的 FFmpeg 命令大概是这样ffmpeg -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 60 -i /dev/video0 \ -f alsa -i hw:1,0 \ -c:v hevc_nvenc -preset fast -tune zerolatency -b:v 20M -g 60 -bf 0 \ -c:a aac -b:a 128k -ar 48000 \ -f rtsp rtsp://0.0.0.0:8554/ps5这条命令的意思是从采集卡/dev/video0以 MJPEG 格式读取 1080p60 视频从声卡hw:1,0读取音频用 NVENC 硬件编码成 H.265码率 20MGOP 60无 B 帧音频用 AAC 128k最后推送到 RTSP 服务器。注意采集卡的音频输入有时候会有延迟或者爆音。如果遇到音频问题可以在 FFmpeg 里加-async 1或者-af aresampleasync1来同步音频。3.3 网络传输的优化网络是串流质量的生命线。我强烈建议用有线连接Wi-Fi 的不稳定性在串流场景下会被放大。如果必须用 Wi-Fi至少要用 5GHz 频段并且确保信号强度在 -50dBm 以上。RTSP 服务器我用的是 mediamtx轻量、稳定、配置简单。默认配置就能跑但有几个参数需要调整rtspTransports设为 udpTCP 重传会增加延迟。readTimeout设为 10s避免客户端断连后服务器一直挂着。writeQueueSize设为 2048防止网络抖动导致丢包。如果网络环境特别差可以考虑用 SRT 协议它自带前向纠错和重传机制抗丢包能力比 RTSP 强很多。但 SRT 的延迟会比 RTSP 高 10-20ms需要权衡。3.4 解码端的配置解码端我主要用 MPV因为它的硬解支持好、延迟低、可定制性强。MPV 播放 RTSP 流的命令很简单mpv --profilelow-latency --hwdecauto rtsp://192.168.1.100:8554/ps5--profilelow-latency会关闭缓存、降低解码延迟--hwdecauto会自动选择硬件解码器。如果画面撕裂可以加--video-syncdisplay-resample如果音频不同步可以加--audio-syncaudio。Android 端我用的是 VLC配置里把网络缓存调到最低比如 100ms硬件解码开启。iOS 端比较麻烦因为 App Store 里支持 RTSP 的播放器不多我最后用的是某个支持自定义协议的播放器配置方式和 VLC 类似。4. 完整实操流程与核心环节实现4.1 硬件准备与连接先列一下我用的硬件清单组件型号/规格备注主机PS5 光驱版任意版本均可采集卡支持 4K60 HDR 环出、1080p120 采集中端型号HDCP 剥离器支持 HDMI 2.0视采集卡而定编码主机迷你 PCi5-1135G716GB RAM支持 QuickSync网络千兆有线交换机编码主机和终端都走有线终端Windows 笔记本、Android 平板支持 H.265 硬解连接步骤PS5 的 HDMI 输出接到 HDCP 剥离器的输入。剥离器的输出接到采集卡的 HDMI 输入。采集卡的 HDMI 环出接到电视。采集卡的 USB 输出接到编码主机。编码主机通过网线接到交换机。终端设备通过网线或 Wi-Fi 接到同一网络。注意采集卡的 USB 接口最好是 USB 3.0 以上USB 2.0 的带宽不够 1080p60 的未压缩视频传输。4.2 编码主机的系统配置编码主机我装的是 Ubuntu Server最小化安装只装必要的组件。这样做的好处是系统资源占用低编码延迟稳定。需要安装的软件FFmpeg编码和推流。mediamtxRTSP 服务器。v4l-utils查看和配置采集卡。alsa-utils查看和配置声卡。安装命令sudo apt update sudo apt install ffmpeg v4l-utils alsa-utilsmediamtx 需要从官网下载二进制包解压后直接运行。配置采集卡v4l2-ctl --list-devices v4l2-ctl --device /dev/video0 --list-formats-ext这两条命令用来确认采集卡的设备节点和支持的格式。我的采集卡支持 MJPEG 和 YUYV 两种格式MJPEG 的 CPU 占用更低所以选 MJPEG。配置声卡arecord -l这条命令列出所有录音设备。采集卡的音频输入通常是某个 hw:X,Y 设备记下编号后面 FFmpeg 要用。4.3 启动编码和推流先启动 mediamtx./mediamtx默认配置下mediamtx 会监听 8554 端口等待推流。然后启动 FFmpeg 推流ffmpeg -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 60 -i /dev/video0 \ -f alsa -i hw:1,0 \ -c:v hevc_nvenc -preset fast -tune zerolatency -b:v 20M -g 60 -bf 0 \ -c:a aac -b:a 128k -ar 48000 \ -f rtsp rtsp://0.0.0.0:8554/ps5如果一切正常mediamtx 的日志会显示有客户端推流成功。这时候在终端上用 MPV 打开rtsp://编码主机IP:8554/ps5应该就能看到 PS5 的画面了。实操心得第一次调试的时候先把码率设低一点比如 5M分辨率设成 720p确认链路通了再逐步提高。这样出问题的时候容易判断是带宽不够还是编码参数不对。4.4 终端设备的优化配置Windows 端用 MPV配置文件放在%APPDATA%/mpv/mpv.confprofilelow-latency hwdecauto video-syncdisplay-resample audio-syncaudio cachenoAndroid 端用 VLC设置里把网络缓存调到 100ms硬件解码设为自动。如果画面卡顿可以尝试关闭硬件解码用软件解码虽然 CPU 占用高但兼容性更好。iOS 端我用的是一个支持自定义 RTSP 的播放器配置和 VLC 类似。但 iOS 的硬解限制比较多H.265 支持不如 Android 广泛所以如果终端是 iOS建议编码用 H.264。4.5 延迟实测与调优我用高速摄像机拍屏幕的方式测了端到端延迟。方法很简单在 PS5 上打开一个带计时器的游戏或者网页用摄像机同时拍下 PS5 环出画面和终端画面然后逐帧对比时间差。实测结果环节延迟采集卡环出5ms编码8ms网络传输3ms解码10ms显示5ms合计31ms31ms 的端到端延迟玩《GT7》这种赛车游戏基本感觉不到延迟玩《街霸》这种格斗游戏也能接受。如果换成软件编码编码延迟会增加到 20ms 以上总延迟超过 45ms格斗游戏就能感觉到输入延迟了。注意显示器的响应时间也会影响体感延迟。我用的是 1ms 响应的电竞显示器如果换成 10ms 响应的普通显示器总延迟会增加到 40ms 以上。5. 常见问题与排查技巧实录5.1 画面黑屏或花屏这是最常见的问题原因可能有以下几种HDCP 冲突PS5 检测到采集卡不支持 HDCP拒绝输出画面。解决办法是加 HDCP 剥离器或者在 PS5 设置里关闭 HDCP但关闭后无法播放蓝光电影。分辨率不匹配PS5 输出的分辨率超过采集卡支持的上限。解决办法是在 PS5 显示设置里手动锁定分辨率。采集卡驱动问题Linux 下采集卡可能需要额外的驱动或者固件。解决办法是查采集卡芯片型号安装对应的驱动。USB 带宽不足USB 2.0 接口无法承载 1080p60 的未压缩视频。解决办法是换 USB 3.0 接口。排查顺序先确认采集卡在系统里能被识别v4l2-ctl --list-devices再用ffplay直接播放采集卡的设备节点看有没有画面。如果有画面说明采集卡正常问题在编码或传输环节如果没有画面问题在采集卡或连接环节。5.2 音频不同步或爆音音频问题通常有两个原因采样率不匹配和时钟漂移。采样率不匹配PS5 输出的是 48kHz 音频如果 FFmpeg 的音频参数设成了 44.1kHz就会产生爆音。解决办法是统一用 48kHz。时钟漂移采集卡的音频时钟和视频时钟不完全同步长时间运行后音频会逐渐偏移。解决办法是在 FFmpeg 里加-af aresampleasync1让音频自动同步到视频时钟。实操心得如果音频延迟明显可以在 MPV 里用--audio-delay参数手动调整比如--audio-delay-0.1表示音频提前 100ms。5.3 画面卡顿或掉帧卡顿的原因通常是网络带宽不足或者编码参数过高。先测网络带宽用iperf3在编码主机和终端之间测一下实际带宽。如果带宽低于码率的 1.5 倍就会卡顿。比如码率 20M带宽至少要 30M。如果带宽够但还是卡可能是编码参数太高。试着降低码率、关闭 B 帧、缩短 GOP。硬件编码的预设也可以从 fast 降到 faster 或 fastest。还有一个容易被忽略的原因终端设备的解码能力不足。如果终端不支持 H.265 硬解用软件解码 1080p60 的 H.265 流CPU 占用会非常高导致掉帧。解决办法是换成 H.264 编码或者换一个支持 H.265 硬解的终端。5.4 常见问题速查表问题可能原因解决办法黑屏HDCP 冲突加 HDCP 剥离器花屏分辨率不匹配锁定 PS5 输出分辨率音频爆音采样率不匹配统一用 48kHz音频不同步时钟漂移加-af aresampleasync1画面卡顿带宽不足降低码率或升级网络掉帧解码能力不足换 H.264 或换终端延迟高编码参数不当用硬件编码、关闭 B 帧连接不稳定Wi-Fi 信号差改用有线连接5.5 独家避坑技巧第一个坑采集卡的环出延迟。有些采集卡的环出会经过内部处理延迟高达 20ms 以上。买之前一定要看评测确认环出延迟在 5ms 以内。第二个坑PS5 的 HDR 输出。PS5 在开启 HDR 后采集卡如果支持 HDR 直通环出端正常但采集端可能会输出色调映射后的 SDR 画面色彩会发灰。解决办法是在采集端也开启 HDR 处理或者接受 SDR 画面。第三个坑USB 接口的供电。有些采集卡功耗较高USB 接口供电不足会导致采集卡不稳定表现为随机黑屏或断连。解决办法是用带独立供电的 USB Hub。第四个坑mediamtx 的默认配置。默认配置下mediamtx 会在客户端断连后保持推流一段时间导致资源浪费。建议把readTimeout设为 10swriteQueueSize设为 2048。第五个坑MPV 的缓存。MPV 默认会缓存一部分流导致延迟增加。一定要加--cacheno或者--profilelow-latency否则延迟会增加 100ms 以上。6. 进阶优化与扩展玩法6.1 多终端同时串流AnyPS5 的架构天然支持多终端。mediamtx 可以同时向多个客户端推送同一路流带宽足够的话几台设备同时看没问题。我试过同时用笔记本和平板串流两台设备都很流畅编码主机的 CPU 占用没有明显增加。但要注意如果终端数量多网络带宽会成为瓶颈。20M 的码率5 台终端就是 100M 的带宽千兆网勉强够用。如果终端更多建议降低码率或者用组播。6.2 远程串流非局域网如果不在同一个局域网比如在公司想连家里的 PS5就需要做端口映射或者用内网穿透。但这里不展开讲因为涉及网络安全和合规问题建议只在可信网络环境下使用。6.3 录制与回放FFmpeg 可以在推流的同时录制一份到本地硬盘。加一个输出参数就行ffmpeg ... -f rtsp rtsp://0.0.0.0:8554/ps5 \ -c copy -f mp4 /path/to/record.mp4这样推流和录制同时进行录制文件可以直接用播放器打开。注意硬盘空间1080p60 的 H.265 视频一小时大概 9GB。6.4 自动化脚本每次开机都要手动敲 FFmpeg 命令太麻烦可以写一个 systemd 服务开机自动启动。创建一个/etc/systemd/system/anyps5.service文件[Unit] DescriptionAnyPS5 Streaming Service Afternetwork.target [Service] ExecStart/usr/bin/ffmpeg -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 60 -i /dev/video0 -f alsa -i hw:1,0 -c:v hevc_nvenc -preset fast -tune zerolatency -b:v 20M -g 60 -bf 0 -c:a aac -b:a 128k -ar 48000 -f rtsp rtsp://0.0.0.0:8554/ps5 Restartalways Useryouruser [Install] WantedBymulti-user.target然后systemctl enable anyps5和systemctl start anyps5以后开机就自动推流了。6.5 画质与延迟的进一步平衡如果对画质有更高要求可以尝试以下调整提高码率到 30-40M但需要网络带宽支持。用 H.264 的 high profile画质比 main profile 好。开启采集卡的 3D 降噪和锐化但会增加延迟。用更好的 HDMI 线材劣质线材会导致信号衰减和色彩偏差。如果对延迟有极致要求可以把编码预设调到 fastest。关闭所有后处理。用 720p 分辨率延迟可以再降 5-10ms。终端用有线连接关闭所有后台网络应用。7. 个人实操体会与建议这套 AnyPS5 方案我用了大概三个月整体非常稳定。最大的感受是串流的质量取决于最弱的那一环。采集卡、编码主机、网络、终端任何一个环节拖后腿整体体验就会大打折扣。如果让我给新手一个建议我会说先把有线网络搞定再考虑其他。我见过太多人用 Wi-Fi 串流然后抱怨卡顿和延迟其实换个千兆网线就解决了。网络是基础基础不牢后面怎么调都是白搭。另一个体会是不要追求极致的参数。20M 码率、1080p60、H.265这套配置在画质和延迟之间取得了很好的平衡。盲目提高码率到 50M画质提升肉眼几乎不可见但网络压力翻倍得不偿失。最后分享一个小技巧如果终端设备的性能足够可以试试用 MPV 的--vogpu-next渲染器画质比默认的--vogpu更好色彩过渡更自然。但这个渲染器对 GPU 有要求老设备可能跑不动。这套方案后续还可以扩展比如加一个 Web 界面用浏览器就能看串流或者加一个手柄映射层让手机触屏也能玩。但这些就属于锦上添花了核心的串流链路已经足够好用。