跳到正文
PS5PCEM
可用音频与视频

AvPlayer

SceAvPlayer 用 FFmpeg 把影片容器解码到游戏拥有的 NV12 帧和 48 kHz 立体声 PCM。即使游戏从未读取其中一条流,播放也会在源时长过去时结束。

仓库笔记截至 2026年10月10日

游戏拥有的缓冲区

播放器使用游戏的分配回调和游戏的文件回调。FFmpeg 探测容器,把视频解码为源分辨率的 NV12,把音频解码为 48 kHz 的交错有符号 16 位立体声。视频和音频有各自的锁和各自的解码进程。时间戳共享一台单调时钟。

暂停、定位、循环和流结束都会保留。软件解码器 ABI 报告对齐后的行跨距、分配高度和可见裁剪。扩展的和旧式的流信息调用都存在。当前时间、常速特技模式、流禁用和有界的媒体时钟覆盖了 Asterix 所带的 Unity 中间件。

结束一部游戏只读了一半的影片

游戏可以只要画面并自己混音,也可以反过来。一直等到每一条流都被读完,会让这个播放器在进程的剩余时间里一直活着。Jurassic Park Classic Games Collection 因此停在片头上:时钟已经比一段三秒的片段超前了九十秒,因为未被读取的音频流从未结束。

时长来自源。当时钟越过它时,即使有一条流被忽略,播放也会结束。在一条流仍在交付时,报告的位置停留在实际交出去的帧之内,因此较慢的机器不会被提前切断。一旦这条流真正结束,时钟可以走到时长。循环的源和长度未知的源会被放过。

呈现

观察到的片头影片在 ReleaseFast 构建里大约以它们的原生帧率播放。Unity 切换片段时会保留最后一帧有效图像,而不是把已清除的解码器表面呈现成纯色。1920×1080 的源可以缩放到游戏所注册的扫描输出目标里。

触觉音轨按时间推进并且是静音。AvPlayer 不驱动控制器。像素经由游戏的着色器或 VideoOut 到达屏幕,而不是经由播放器内部的第二套合成器。

已经实现的部分

  • 用 FFmpeg 解码到 NV12 视频和 48 kHz 立体声 PCM,缓冲区归游戏所有。
  • 扩展和旧式的流信息、暂停、定位、循环,以及共享的媒体时钟。
  • 当游戏留下一条流不读时,播放在源时长处结束。
  • 跨片段切换保留最后一帧有效图像。

尚未实现的部分

  • 触觉是静音。控制器振动没有被模拟。
  • 循环的源和长度未知的源不会被时长规则切断。
  • 缺少文件回调,或 FFmpeg 无法探测的容器,会使该资源失败。

相关机制

这些页面说明什么

文字依据 PS5PCEM 仓库中的架构说明和 2026 年 10 月的报告。单项测试通过并不等于新的帧率,也不等于新的通关。

全部技术