现在用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秒。