使用教程 - EnixCoda/PS5-Streamer GitHub Wiki

This tutorial is written in Chinese. Because it is aimed at China mainland players, who have no access to native streaming platforms of PlayStation (YouTube and Twitch), but still want to stream their game experience to other platforms. Feel free to draft an issue to let me know if you need an English version.

因为本项目主要面向不使用 Twitch 的中国大陆用户,所以用中文编写教程。希望描述的足够简单,让小白用户也能直播成功。

通过本教程,可以将 PS5 的游戏画面以 1080P 60FPS 推流到国内直播平台,而且无需采集卡。

正式开始使用前,请准备以下内容

  1. 用于直播的 PC
  2. 在 PC 上安装 Docker
  3. Twitch 账户
  4. 国内任意平台的直播账户

*中国大陆玩家请准备网络代理以访问 Twitch,推荐在 PC 安装 Clash

使用步骤

在 PC 上操作

  1. 在系统的 下载 文件夹新建一个文本文档,把以下内容保存到其中,然后将文本文档重命名为 docker-compose.yml,注意这时后缀名不再是 .txt 而是 .yml

    services:
      nginx-rtmp:
        image: "enixcoda/nginx-rtmp"
        restart: always
        ports:
          - "8081:80"
          - "1935:1935"
    
      dnsmasq:
        image: "enixcoda/dnsmasq"
        restart: always
        ports:
          - "53:53/udp"
          - "8080:8080"
    image

    此处截图未更新,右侧的内容没有新增的 restart: always,但不加也不影响使用。

  2. 从开始菜单找到 命令提示符(或者叫命令行)并打开,输入 cd .\Downloads,按回车,切换到系统下载文件夹

  3. 确保 Docker 已经启动(在系统托盘能看到 Docker 的小图标),然后继续在命令行操作,输入 docker-compose -p ps5-streamer up,耐心等待进度条走完。 image

  4. 看到下图所示内容即代表成功(最后几行有 dnsmasq 字样),此时不要关闭命令行,转到下一步 image

  5. 打开浏览器,访问 http://localhost:8080 ,将看到两个大的输入框,其中一个输入框末尾有一句 address=/contribute.live-video.net/192.168.1.1 ,把末尾的 192.168.1.1 替换成 PC 的局域网 IP,点击页面左侧的 Save 按钮 image

在 PS5 上操作

  1. 进入 设定 -> 网络 -> 设定 -> 设定互联网连接 -> 选择框选中连接的 Wi-Fi 时按下触摸板右侧的小按钮 -> 高级设定
    1. DNS设定 改为 手动首选DNS 设为 PC 的局域网 IP,备选DNS保持默认(0.0.0.0
    2. 代理服务器 改为 使用,然后输入你的代理软件开放的 HTTP 地址和端口
      1. 如果你是在 PC 安装的代理软件(Clash),IP 请输入 PC 的 IP,端口请查看代理软件设置的端口(Clash默认端口为 7890
      2. 如果你是在 PC 安装的 Clash,请在 Clash 主界面允许局域网连接(英文为 Allow LAN),其他软件同理
    3. 进入 设定 -> 网络 -> 连接状态 -> 测试互联网连接,所有项目通过则说明代理设置正确,可以继续下一步
  2. 进入 设定 -> 用户和帐号 -> 链接至其他服务 -> Twitch,按照提示操作登陆你的 Twitch 账户
  3. 启动任意游戏,按下手柄触摸板左侧的小按钮,选择 播放,选择 Twitch,这里如果遇到额外步骤请按屏幕提示操作
  4. 稍作等待,顺利的话将看到输入直播名称的界面,可以输入任意内容,这并不会向观众展示;如果此处不顺利请检查代理设置
  5. 选择 直播 ,右上角弹出直播中的提示即为成功

在 PC 上操作

  1. 打开浏览器,访问 http://localhost:8081 (注意这里是 8081,与上方的 8080 不同)
  2. 你将看到类似下图的界面,请手动复制 live_66666666_XXXXXX 的文字,具体内容因人而异,格式是一样的 image
  3. 打开你使用的直播软件,添加相应的 rtmp 视频源,地址为 rtmp://192.168.1.1/app/live_66666666_XXXXXX ,前半部分的 192.168.1.1 请替换为 PC 的 IP,后半部分正是刚刚复制的文字
    1. 这时通过 PotPlayer / VLC 等播放器打开这个地址播放,如果可以看到 PS5 的画面,说明前面的步骤操作全部正确,否则请仔细检查
  4. 顺利的话此刻应当也能通过直播软件添加 rtmp 视频源从而看到 PS5 画面
    1. 如果你使用的是 Bilibili 直播姬,可以按 添加素材 -> 多媒体 -> 拉流或文件 中输入上述地址。其他软件的操作方法请自行搜索
  5. 享受直播

初次开播时,需在播完后再关闭命令行。之后再次需要直播时,就不需要命令行了,只需要确保 PC 代理软件在运行中,然后在 Docker 主界面下的 Containers/Apps 找到 ps5-streamer,如果它不在 RUNNING 状态,就点击它右侧的播放按钮把它启动。然后再在 PS5 开始直播。这时打开 PC 的直播软件就能看到画面, rtmp 视频源地址也是固定的,不必每次重设。非常方便。

友情提示:直播流量不经过代理软件,会直接传给直播软件,不必担心流量因为直播被消耗完。


[进阶用法] PS5 直接推到直播平台的方法 [点此展开]

因为操作比较麻烦而且不能后期编辑直播画面,不推荐这一方法

这一方法没有严格经过测试,遇到问题可能需要自行解决

  1. 打开 Docker 主界面,找到 ps5-streamer,确保它在运行中。点击左侧三角形图标展开它,找到有 ps5-streamer_nginx-rtmp 字样的这一行(你可能看到后面还有 _1 之类的后缀),如图所示点击 CLI 图标 image
  2. 在弹出的命令行界面,输入 vi /opt/nginx/conf/nginx.conf,回车,进入 vim 编辑界面 image

    vim 是命令行编辑器,它使用键盘进行操作,如果你不熟悉 vim,接下来请严格按照指示按键。万一你发现自己按错了键,vim 不受控制,请直接关闭当前命令行窗口,回到上一步重新点击 CLI 开始操作

  3. 使用键盘方向键移动光标,找到 rtmp 这一行,往下继续找,看到 application 区块
  4. 用方向键移动光标到 application 区块末尾,按下键盘 i 键,这时画面左下角的 - 变成了 I。现在你可以从光标位置正常输入文字了,按键盘或者粘贴加入语句 push rtmp://live-push.bilivideo.com/live-bvc/xxxxxxxxxxxxxxxxxx;。后半部分的 rtmp://... 是直播平台提供的 rtmp 推流地址,获取方式请自行查阅,这里以B站的为例。 请注意结尾的分号 ; 请注意结尾的分号 ; 请注意结尾的分号 ;
  5. 编辑好后的效果如下 image
  6. 按下 esc 键,此刻界面左下角的 I 变回 -
  7. 按下 shift + ; 键,输入 :(你可以看到文字输入到了界面左下角)
  8. 按下 x image
  9. 按下 回车,成功退出 vim
  10. 回到 Docker 主界面,点击 ps5-streamer 这一行的 stop 图标,再点击 start 图标,使得服务重新启动

然后当你在 PS5 开始直播,应当能够直接在直播平台看到画面


参考

感谢以下项目带来启发,让我做了这个项目

  • https://hub.docker.com/r/bao3/playstation

    相比于这个项目,本项目解决了它 劫持 Twitch 域名 这一步对小白用户造成的困扰,给更多用户开始直播提供了可能性

  • https://github.com/Tilerphy/ps4broadcast

    相比于这个项目,本项目简化了设置步骤;支持直接推流到直播平台的同时也支持获取视频流后通过 PC 再推从而更好地控制直播效果;取消了加设网关,从而绕开了对 PC 网卡的硬性要求,也避免了影响 PS5 和 PC 的网络性能,这对联机游戏尤为重要;但是没做 XBOX 的支持,也不支持通过图形化界面设置推流到多平台,如果你需要这些功能,推荐看看这个项目

⚠️ **GitHub.com Fallback** ⚠️