A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 16172|回复: 42

PS5直接推流 使用Linux+支持DNSMasq的路由器 国内直播平台教程

[复制链接]

精华
0
帖子
9925
威望
0 点
积分
10064 点
种子
343 点
注册时间
2016-3-25
最后登录
2025-1-30
 楼主| 发表于 2021-4-30 00:32  ·  云南 | 显示全部楼层 |阅读模式
本帖最后由 Lumi-Kumi 于 2021-8-5 13:42 编辑

现目前PS5直播功能只能支持Twitch和油罐
而这些直播平台国内访问受限你就算能播受众也仅仅是能够访问这些平台的人
所以如果能够使用主机自带的流媒体功能就可以不用购买采集卡即可直播1080P60帧+HDR到国内平台
本教程和之前过代理的方法差不多也是在Linux上部署nginx和nginx-rtmp-module模块来实现
只是可以更加灵活独立不用每次去修改代理

本教程参考内容:
https://moe.best/tutorial/ps4-live.html
https://www.bilibili.com/read/cv5797452/

首先你需要先在PS5上捆绑Twitch账户这一步是必须的否则你无法推流
这一步可能需要一些手段 请自行搞定
然后需要一个独立的Linux环境不管是虚拟机还是WSL还是树莓派上装个Linux都可以而且树莓派的性能足够了又小又省电
我这里使用的是Ubuntu 20.04运行于Hyper-V虚拟机只上
PS:Hyper-V很难用不推荐 建议用VMware
使用虚拟机的建议先将网卡设置为桥接模式
然后单独设置虚拟机的IP和你的PS5在同一网段即可
路由器开启DHCP了可以自动获取只是建议和MAC地址捆绑省得IP换了麻烦
这样虚拟机就和你的PC分别是2个不同的IP了这样最好虚拟机也可以随用随启还可暂停挂起

首先第一部先更换国内源否则真的可以说是慢的要死
打开终端
使用root权限挂窗
  1. sudo -i
复制代码

然后输入你的密码确定
接着备份源文件
  1. sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
复制代码

然后再使用gedit编辑源文件(要用vim的请自便)
  1. sudo gedit /etc/apt/sources.list
复制代码

在最上面添加阿里云的源
在第一行第一个字符前面按下回车加两行然后再在前面的一行添加
  1. deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
  2. deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
  3. deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
  4. deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
  5. deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
  6. deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
  7. deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
  8. deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
  9. deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
  10. deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
复制代码

设置完以后保存退出
然后刷新
  1. sudo apt update
复制代码

然后更新
  1. sudo apt upgrade
复制代码

PS:替换完源建议关闭Ubuntu自动更新 因为这个Linux是专门用来推流的 而我这里挂了好几次不知道是不是阿里的源有问题当然也有可能是我用Hyper-V造成的
接着安装依赖
  1. apt-get install -y build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev git
复制代码

移至opt目录
  1. cd /opt
复制代码

下载nginx-1.16.1源码到该目录
  1. wget https://nginx.org/download/nginx-1.16.1.tar.gz
复制代码

解包
  1. tar zxvf nginx-1.16.1.tar.gz
复制代码

移至到/opt/nginx-1.16.1目录
  1. cd nginx-1.16.1
复制代码

获取 nginx-rtmp-module
  1. git clone https://github.com/arut/nginx-rtmp-module.git --depth=1
复制代码

# configure
  1. ./configure --prefix=/opt/nginx  --add-module=./nginx-rtmp-module/ --with-http_ssl_module
复制代码

使用gcc -dumpversion命令查看一下自己的 gcc 版本,特别是如果你用的是 WSL,预装的 gcc 应该是 8,版本是 7 及以上的必须改 makefile 来忽略 nginx 源码中 switch-case 没加 break 造成的 implicit fallthrough error

编辑/opt/nginx-1.16.1/objs/Makefile,在下面所示的这行上加个-Wno-implicit-fallthrough (可以用查找替换)
  1. sudo gedit /opt/nginx-1.16.1/objs/Makefile
复制代码
# 把
CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g
# 改为
CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -Wno-implicit-fallthrough

编辑完以后保存退出
接下来make安装
  1. make && make install
复制代码

现在nginx和nginx-rtmp-module模块就部署好了
但是还需要配置nginx
配置 nginx
先确认当前目录还在/opt/nginx-1.16.1
如果不在的执行
  1. cd /opt/nginx-1.16.1
复制代码

拷贝nginx-rtmp-module模块中的网页脚本stat.xsl到/opt/nginx/html目录
  1. cp nginx-rtmp-module/stat.xsl /opt/nginx/html
复制代码

给予www-data用户 /opt/nginx/html目录的访问权限
  1. chown -R www-data:www-data /opt/nginx/html
复制代码

然后编辑nginx配置文件
  1. sudo gedit /opt/nginx/conf/nginx.conf
复制代码
首先将最前面#user nobody;修改为user www-data;

可以查找替换
然后在 http 配置块前加上 rtmp 配置
在http前面按两下回车加两行然后再在前一行添加
  1. rtmp {
  2.     server {
  3.         listen 1935;
  4.         application app {
  5.             live on;
  6.         }
  7.     }
  8. }
复制代码


在 http 的 server 配置块中加入 rtmp 状态页面配置,location /直接修改原有即可
建议把location / {******}模块中的数据全部替换
注意不要看错子项中的"{}"
  1.         location / {
  2.             rtmp_stat all;
  3.             rtmp_stat_stylesheet stat.xsl;
  4.         }

  5.         location /stat.xsl {
  6.             root /opt/nginx/html;
  7.         }
复制代码

设置完以后保存退出
然后你的配置看起来回是这样(仅供参考不建议复制该配置)
user  www-data;
worker_processes  1;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;
        application app {
            live on;
        }
    }
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile           on;
    keepalive_timeout  65;

    server {

        listen       80;
        server_name  localhost;

        location / {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root /opt/nginx/html;
        }
    }
}

接下来要测试nginx配置是否有问题
  1. /opt/nginx/sbin/nginx -t
复制代码

如果没有问题会显示test is successful
如果有问题请自行排查nginx配置有没有按教程一步步设置完成
没问题的话启动nginx
  1. /opt/nginx/sbin/nginx
复制代码


接下来就需要劫持 twitch 的推流了
需要添加DNSMasq列表
先取得你虚拟机的IP然后替换以下列表中的192.168.1.100再将以下内容添加到DNSMasq列表中
  1. # twitch直播劫持
  2. address=/live.twitch.tv/192.168.1.100
  3. address=/.contribute.live-video.net/192.168.1.100
  4. address=/.live-video.net/192.168.1.100
  5. address=/live-fra02.twitch.tv/192.168.1.100
  6. address=/live-dfw.twitch.tv/192.168.1.100
  7. address=/live-bkk.twitch.tv/192.168.1.100
  8. address=/live-ord02.twitch.tv/192.168.1.100
  9. address=/live-sin.twitch.tv/192.168.1.100
  10. address=/live-qro.twitch.tv/192.168.1.100
  11. address=/live-hel.twitch.tv/192.168.1.100
  12. address=/live-osl.twitch.tv/192.168.1.100
  13. address=/live-sjc.twitch.tv/192.168.1.100
  14. address=/live-slc.twitch.tv/192.168.1.100
  15. address=/live-arn.twitch.tv/192.168.1.100
  16. address=/live-sea.twitch.tv/192.168.1.100
  17. address=/live-ymq.twitch.tv/192.168.1.100
  18. address=/live-tpe.twitch.tv/192.168.1.100
  19. address=/live-tpe01.twitch.tv/192.168.1.100
  20. address=/live-mia.twitch.tv/192.168.1.100
  21. address=/live-sao.twitch.tv/192.168.1.100
  22. address=/live-lhr03.twitch.tv/192.168.1.100
  23. address=/live-lax.twitch.tv/192.168.1.100
  24. address=/live-hkg.twitch.tv/192.168.1.100
  25. address=/live-mrs.twitch.tv/192.168.1.100
  26. address=/live-iad03.twitch.tv/192.168.1.100
  27. address=/live-iad05.twitch.tv/192.168.1.100
  28. address=/live-phx.twitch.tv/192.168.1.100
  29. address=/live-atl.twitch.tv/192.168.1.100
  30. address=/live-sel03.twitch.tv/192.168.1.100
  31. address=/live-sfo.twitch.tv/192.168.1.100
  32. address=/live-tyo.twitch.tv/192.168.1.100
  33. address=/live-prg.twitch.tv/192.168.1.100
  34. address=/live-jfk.twitch.tv/192.168.1.100
  35. address=/live-den.twitch.tv/192.168.1.100
  36. address=/live-mad.twitch.tv/192.168.1.100
  37. address=/live-sel01.twitch.tv/192.168.1.100
  38. address=/live-ams.twitch.tv/192.168.1.100
  39. address=/live-tpe03.twitch.tv/192.168.1.100
  40. address=/live-mil.twitch.tv/192.168.1.100
  41. address=/live-hou.twitch.tv/192.168.1.100
  42. address=/live-cph.twitch.tv/192.168.1.100
  43. address=/live-fra05.twitch.tv/192.168.1.100
  44. address=/live-pdx.twitch.tv/192.168.1.100
  45. address=/live-lhr04.twitch.tv/192.168.1.100
  46. address=/live-yto.twitch.tv/192.168.1.100
  47. address=/live-cdg.twitch.tv/192.168.1.100
  48. address=/live-waw.twitch.tv/192.168.1.100
  49. address=/live-ber.twitch.tv/192.168.1.100
  50. address=/live-syd.twitch.tv/192.168.1.100
  51. address=/live-ord03.twitch.tv/192.168.1.100
  52. address=/live-rio.twitch.tv/192.168.1.100
  53. address=/live-vie.twitch.tv/192.168.1.100
复制代码

然后重载刷新(某某插件内是保存应用)
接下来就可以测试了
打开PS5 运行任意一个游戏 然后点击分享键选择从Twitch直播
速度应该会很快就提醒你已经开始直播
然后在同网段的电脑上(虚拟机所在的实机上)打开网页浏览器输入你的虚拟机IP比如我上面的这个IP是192.168.1.100
如果成功劫持了推流而且Nginx和模块工作正常的话接下来你会在网页中显示一段ID
比如像这样
live_***************

把这段ID复制下来粘贴到以下这个链接中替换live_******的部分注意这个链接的IP也要替换为你虚拟机的IP
rtmp://192.168.1.100:1935/app/live_******

然后将链接拷贝下来复制到例如Potplayer这样的可以播放rtmp推流的视频播放器中
如果可以正常观看了
那就OK了
使用OBS加载然后直播就完事了

添加linux开机nginx自启动
移动到/etc/init.d/目录
  1. cd /etc/init.d/
复制代码

创建名为nginx_rtmp.sh的脚本文件
  1. sudo touch nginx_rtmp.sh
复制代码

然后编辑该文件
  1. sudo gedit nginx_rtmp.sh
复制代码

以及/etc/rc.local文件
  1. sudo gedit /etc/rc.local
复制代码

添加以下内容到两个文件里面然后保存 注意替换里面的“Root密码”
  1. #!/bin/sh
  2. #auto run nginx when system startup
  3. sudo -S /opt/nginx/sbin/nginx
  4. Root密码
  5. exit 0
复制代码

更新rc.local目录权限
  1. sudo chmod +x  /etc/rc.local
复制代码


然后再更新rc.d
  1. sudo update-rc.d  nginx_rtmp.sh defaults
复制代码

以后开机就会自启动nginx
但是有挂起不是更快

使用OBS直播的到这就完成了

当然了也可以直接使用Nginx推流不过OBS
只需要继续修改上面的nginx配置就行
修改 nginx 配置,在 rtmp 配置块中的live on;下面添加一行push rtmp://[直播推流带key的完整地址];即可
push rtmp://js.live-send.acg.tv/live-js/?streamname=[name]&key=[key];

重载配置即可

  1. /opt/nginx/sbin/nginx -s reload
复制代码


你的配置看起来会像这样(B站)
不要直接复制该配置 仅供参考
user  www-data;
worker_processes  1;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;
        application app {
            live on;
            push rtmp://live-push.bilivideo.com/live-bvc/?streamname=[name]&key=[key];
        }
    }
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile           on;
    keepalive_timeout  65;

    server {

        listen       80;
        server_name  localhost;

        location / {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root /opt/nginx/html;
        }
    }
}

这样的话你的Twitch直播推流会直接推送的你的直播平台
其实这样也蛮好的很轻量只需要一个树莓派就能搞定而树莓派功耗又低
要在树莓派上过OBS也可以支持硬解其实蛮好的比电脑虚拟机省电多了

我又重新用树莓派过了一遍更新了一些容易出问题的地方
现在测试教程完全没有问题


教程有问题的我话提出我可以更新
没问题了就不更新了因为不需要更新



更新树莓派镜像直接刷入TF卡开机即用
32G TF卡制作 实际使用量大概10G 不到理论上16G tf卡也能用
这边Pi用的镜像我有时间再做出来分享

37楼和38楼的朋友已经分享docker镜像
https://bbs.a9vg.com/forum.php?m ... 85&pid=61007787
https://bbs.a9vg.com/forum.php?m ... 85&pid=61009425


精华
0
帖子
3364
威望
0 点
积分
3417 点
种子
603 点
注册时间
2013-2-21
最后登录
2025-1-30
发表于 2021-4-30 13:03  ·  上海 | 显示全部楼层
本帖最后由 jocover 于 2021-4-30 13:04 编辑

https://bbs.a9vg.com/thread-4160686-1-1.html
https://bbs.a9vg.com/thread-4199530-1-1.html
出口转内销

精华
0
帖子
216
威望
0 点
积分
207 点
种子
8 点
注册时间
2005-6-10
最后登录
2025-1-30
发表于 2021-4-30 13:17  ·  湖北 | 显示全部楼层
这个正好可以可以试试,我刚装了unbutu

悟道者

丽法

精华
0
帖子
26745
威望
3 点
积分
30297 点
种子
1646 点
注册时间
2014-12-7
最后登录
2023-3-16
发表于 2021-4-30 13:26  ·  上海 | 显示全部楼层
呜呜还是好麻烦…国行什么时候能支持直接推流b站斗鱼就好了
发自A9VG iPhone客户端

终结者

PSN:xieyg

精华
0
帖子
8412
威望
2 点
积分
9185 点
种子
176 点
注册时间
2009-5-20
最后登录
2025-1-30
发表于 2021-5-1 00:14  ·  新疆 | 显示全部楼层
本帖最后由 鬼爵爷 于 2021-5-1 00:51 编辑

看完之后,看着手里的采集卡越发珍贵了
该用户已被禁言

流放者(禁止发言)

九十九眠る八雲

精华
0
帖子
12648
威望
0 点
积分
15276 点
种子
2425 点
注册时间
2005-8-19
最后登录
2024-12-9
发表于 2021-5-1 00:27  ·  北京 | 显示全部楼层
太需要了,收藏一份

精华
0
帖子
330
威望
0 点
积分
331 点
种子
32 点
注册时间
2020-12-10
最后登录
2025-1-27
发表于 2021-5-1 00:37  ·  江西 | 显示全部楼层
其实正经做主播还是专门弄一台专门的推流机比较好,因为还要加入摄像头的画面,回复弹幕和观众互动。
之前上世代PS4和X1有的游戏直接推流还会导致性能下降掉帧,次世代主机还没试过不清楚是不是还有这种情况

精华
0
帖子
7181
威望
1 点
积分
7895 点
种子
500 点
注册时间
2006-6-15
最后登录
2025-1-30
发表于 2021-5-1 00:51  ·  美国 | 显示全部楼层
1080已經意義不大了
4路的4k 60f的採集卡也才500刀

精华
0
帖子
9925
威望
0 点
积分
10064 点
种子
343 点
注册时间
2016-3-25
最后登录
2025-1-30
 楼主| 发表于 2021-5-1 01:05  ·  云南 | 显示全部楼层
jocover 发表于 2021-4-30 13:03
https://bbs.a9vg.com/thread-4160686-1-1.html
https://bbs.a9vg.com/thread-4199530-1-1.html
出口转内销 ...

你这个是过代理的
现在Linux直接关掉不影响我串流外的任何使用

精华
0
帖子
154
威望
0 点
积分
154 点
种子
18 点
注册时间
2021-4-20
最后登录
2022-12-12
发表于 2021-5-1 04:23  ·  山东 来自手机 | 显示全部楼层
Lanaya 发表于 2021-5-1 00:37
其实正经做主播还是专门弄一台专门的推流机比较好,因为还要加入摄像头的画面,回复弹幕和观众互动。
之前 ...

ps5 会自动加入摄像头画面的,而且可以调,很方便。PS5官方摄像头 199¥ RMB。这样一看,就真的不需要推流电脑了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2025-1-30 22:27 , Processed in 0.236958 second(s), 18 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部