现在用CentOS的应该很少了,推荐点这个Debian的版本:https://www.mfpud.com/topics/10833/
使用CentOS 7 搭配宝塔面板,以及ffmpeg,youtube-dl之类的工具,以及nginx的rtmp模块,可以搭建一个自己的直播平台,也可以截取youtube的直播转播到bilibili上,当然也可以把视频推流到Youtube,或者本地使用OBS直播推流到VPS,再由vps转推流到youtube,都可以。
Debian系统也可以,把下面的命令改成debian系统的安装命令就可以了。本文最下面有个debian系统的其他教程,可以参考下命令。
购买一个国外的VPS,系统选CentOS 7,使用ssh连接,比如xshell工具,登录root账号。
安装bbr,安装完成后需要重启。
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh
更新系统
yum update -y
安装宝塔面板,先不要去宝塔面板中安装nginx,只先记下宝塔的账号密码就行。
curl -sSO http://download.bt.cn/install/install_panel.sh && bash install_panel.sh
安装下面这一堆东西
yum install -y epel-release
yum install python3-pip
pip3 install you-get
pip3 install streamlink
pip3 install --upgrade streamlink
pip3 install --upgrade yt-dlp
pip3 install --upgrade youtube-dl
yum install screen
yum -y install python-pip
安装FFmpeg:https://www.mfpud.com/topics/7693/
下载nginx的rtmp模块
yum -y install git
sudo yum install -y git make gcc gcc-c++ wget
sudo yum -y install pcre-devel openssl openssl-devel
git clone https://github.com/arut/nginx-rtmp-module /www/server/nginx_plus/nginx-rtmp-module/
接下来就是去宝塔面板中安装带rtmp模块的nginx,方法有两种
比较简单的是,打开宝塔的软件商店,找到运行环境的nginx,点编译安装,点添加自定义模块
模块名称:nginx_rtmp_module
描述:nginx rtmp
参数:--add-module=/www/server/nginx_plus/nginx-rtmp-module/
还有一种方法是去文件中,找到 /www/server/panel/install/nginx.sh
右键编辑,搜索
./configure
在后面添加 一行
--add-module=/www/server/nginx_plus/nginx-rtmp-module/
修改后保存文件
回到ssh里,运行这个安装命令
sh /www/server/panel/install/nginx.sh install 1.21
安装完成后,可以运行nginx -V看看rtmp有没有安装成功。
接下来就是添加一个网址,以及一些nginx的配置文件
比如去网站里面,添加一个 live.hercd.com的网址,并申请安装SSL证书。
网站目录应该是 /www/wwwroot/live.hercd.com
宝塔面板点文件,找到以下路径
/www/server/nginx/conf
新建一个空白文件,起名 rtmp.conf
编辑这个文件,添加如下内容,注意改自己的网址
rtmp_auto_push on;
rtmp {
server {
listen 1935; #监听端口,记得开放
ping 30s;
chunk_size 4000;
notify_method get;
application hls {
live on;
hls on;
hls_path /www/wwwroot/live.hercd.com; #视频流暂存地址
hls_sync 100ms;
hls_fragment 5s; #切片大小,越小占用资源越高,但是延时越小,默认5s
}
application live {
live on;
}
# Video on demand
#application vod {
# play /www/tmp/Videos;
#}
# Video on demand over HTTP
#application vod_http {
# play http://localhost:8080/vod/;
#}
}
}
去软件商店,已安装,nginx,设置,配置修改
在
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
下面,添加一句
include rtmp.conf;
在然后,找到这行代码
access_log /www/wwwlogs/access.log;
在这行代码上面,添加一堆代码。
需要添加的代码,注意改自己的网址
#----------------rtmp的设置-----------
#rtmp-http 配置这些配置放在nginx.conf的http{}里面
#rtmp状态
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /www/server/nginx-rtmp-module;
#rtmp- module模块安装地址,这个可以通过http看到状态
}
#http支持hls流播放
location /hls {
#Serve HLS config
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /www/wwwroot/live.hercd.com; #与视频流暂存地址相同
expires -1;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
#----------------rtmp的设置-----------
保存后,重载配置,重启nginx
去宝塔面板,安全,里面,添加放行端口1935
最后就可以用obs去做视频推流了
推流服务器写
rtmp://你的ip地址:1935/hls
密码写个单词就行,比如写test
然后推送一下,看看文件夹内是否已经开始出现缓存内容了。
然后就可以把网址分享出去了
ip分享播放地址是
rtmp://你的ip地址:1935/hls/test
网址链接就是刚才你设置的网址,以及附带的 密码.m3u8
比如刚才设置的
live.hercd.com/test.m3u8
接下来简单说一下把youtube视频推流到bilibili或者其他直播平台的方法
流程,使用youtube-dl获取youtube直播的m3u8地址,然后使用ffmpeg推流到bilibili服务器,或者其他服务器,一个道理
因为ssh窗口是那种一次性的,就是开着ssh窗口的时候能直播,关了窗口直播就停了,所以就需要用screen的功能开启可以后台的ssh窗口,这个大家应该都知道
创建一个叫mfpud的可以后台的ssh窗口
screen -S mfpud
读取
screen -r mfpud
获取youtube直播的m3u8直播流
youtube-dl -g https://www.youtube.com/channel/UC7QVieoTCNwwW84G0bddXpA/live
只要频道正在直播,就可以得到一个m3u8的地址,然后使用ffmpeg推流就可以
ffmpeg -i m3u8地址 -c:v copy -c:a aac -b:a 320k -ar 44100 -bufsize 1 -strict -2 -f flv "推流地址"
比如这样,自行修改为你的地址
ffmpeg -i https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1616249662/ei/3q5VYLCCEdfbkgarrY3wCg/ip/207.246.105.25/id/-8XZZjd3PY0.1/itag/301/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D299/hls_chunk_host/r6---sn-a5meknek.googlevideo.com/vprv/1/playlist_type/LIVE/initcwndbps/4970/mh/2P/mm/44/mn/sn-a5meknek/ms/lva/mv/m/mvi/6/pl/23/dover/11/keepalive/yes/fexp/24001373,24007246/mt/1616227701/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,sgoap,sgovp,vprv,playlist_type/sig/AOq0QJ8wRgIhAPbG0tL_kJGMTjBOpeJUrW_CB8MgsB-7tpjqhmLZD7vNAiEAqBMH2CKn6wZbgfv1W07DFiodPIeNnXk4y-TThQyiRHc%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRAIgBTAL8r2Gja5TInn8kYDgdK0QxnKTEutzcSzat_eMPlcCIDMZtwft-AM2LZJOELqw-XIYTMXCpye3mzYRGNYp0Rfq/playlist/index.m3u8
-c:v copy -c:a aac -b:a 320k -ar 44100 -bufsize 1 -strict -2 -f flv "rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_1369556_4527877&key=62633b796d2a1dfb3dhdf7676243ae68&schedule=rtmp"
然后就是推流到自己的这个VPS上,然后使用VPS上的ffmpeg推流到youtube的方法
打开你的OBS,推流地址写
rtmp://youvpsip:1935/hls
串流密匙写个单词就行,比如写mfpud
然后推流测试一下,不出意外,你的 /www/wwwroot/live.hercd.com 目录中已经开始出现.ts以及.m3u8的一大堆文件了
这样就表示你的VPS已经开始接收到直播推流了,接下来就是把接收到的直播推流到youtube
依然是要用screen的后台窗口,以此执行下面命令,注意改成你自己的
cd /www/wwwroot/live.hercd.com
ffmpeg -re -i mfpud.m3u8 -vcodec copy -acodec copy -f flv -y rtmp://a.rtmp.youtube.com/live2/you-youtube-stream-key
这样,你的VPS就可以把接收到的直播转推到youtube了,不过我测试了一下,大概会有35s的延迟。
上面的这个推流代码是把接收到的直播原封不动的推流给youtube,如果需要其他转码推流什么的,可以自行学习ffmpeg的推流命令。
还有就是,查看所有后台中的ssh命令
screen -ls
以及关闭并清除某个后台ssh的命令,数字和名字改成自己的
screen -X -S 8471.mfpud quit
顺便说下,使用本地推流到VPS,再用VPS推流给youtube,延迟大概37秒。
直接本地高科技以及Proxifier加起来推流,延迟大概7秒。