下面我将为你提供一个从零开始的、详细的搭建指南,包括技术选型、步骤、优化建议和注意事项。
一个基本的直播平台主要包含三个核心环节:
1、推流(Stream Publishing):主播使用电脑/手机上的推流软件(如 OBS)将音视频数据发送到服务器。
2、流媒体服务器(Streaming Server):这是核心部分,运行在你的云主机上,它负责接收推流、进行转码、录制、截图等处理,并分发给观众。
3、拉流播放(Stream Playing):观众通过网页、手机App等播放器,从服务器拉取流进行观看。
flowchart LR A[主播端 OBS等] -- 推流RTMP --> B[云主机<br>流媒体服务器<br>(SRS/NGINX-RTMP)] B -- 转换协议HLS/FLV --> C[云存储/CDN<br>可选] B -- 直接拉流 --> D[观众端] C -- 分发加速 --> D[观众端<br>网页/App播放器]
1、选择云服务商:
国内阿里云、腾讯云、华为云(如果你的观众主要在国内,必须备案域名才能使用国内云主机并开启Web服务)。
国外AWS、Google Cloud、Azure、Vultr、Linode(免备案,全球访问可能更快,但国内访问可能慢)。
* 对于新手,推荐腾讯云或阿里云,它们对直播场景有较好的优化和支持。
2、选购云主机(ECS):
配置直播对CPU和带宽要求较高。
CPU1核2G起步(测试学习),如果需要实时转码(如将高清流转为标清流),则需要更强大的CPU(4核以上)。
内存2GB起步,根据并发和操作需求增加。
带宽这是成本大头,请务必选择按量计费的带宽,或者高带宽的配置,直播流量巨大,固定带宽很容易被打满,推荐初始选择5-10Mbps,根据观众数升级。
系统推荐选择CentOS 7.x 或Ubuntu 20.04 LTS,社区支持好,文档丰富。
3、域名(可选但强烈推荐):
* 买一个域名并完成备案(国内主机)。
* 为你的直播服务器分配一个子域名,例如live.yourdomain.com
。
4、安全组(防火墙)设置:
在你的云服务器控制台,放行以下端口
1935RTMP协议推流/拉流端口(默认)。
80/443HTTP/HTTPS端口,用于HLS拉流和Web管理界面。
1985SRS的HTTP API端口(用于管理)。
22SSH端口(用于远程连接管理)。
这是最核心的一步,这里以两款最流行的开源软件为例:
方案一:SRS (Simple RTMP Server)强烈推荐
SRS是国内开发的高效流媒体服务器,对直播支持非常好,文档是中文的,社区活跃。
安装步骤(以CentOS 7为例):
1、通过SSH连接你的云主机。
2、获取源码并编译:
# 安装依赖 yum install -y git gcc-c++ make patch yum install -y unzip perl # 下载SRS源码(以4.0版本为例,请查看官网获取最新版) git clone -b 4.0release https://gitee.com/ossrs/srs.git cd srs/trunk # 编译并安装 ./configure && make
3、选择配置文件并启动:
SRS提供了多种应用场景的配置模板,我们使用一个支持RTMP和HLS的简单配置。
# 使用包含RTMP和HLS的配置文件 ./objs/srs -c conf/srs.conf
4、测试推流:
在OBS中设置“推流”
服务自定义
服务器rtmp://你的云主机IP地址:1935/live
(live
是App名,可自定义)
串流密钥your_stream_key
(如test
)
* 点击“开始推流”,OBS应显示连接成功。
5、测试拉流:
RTMP拉流使用VLC播放器,打开网络串流:rtmp://你的云主机IP地址:1935/live/test
HLS拉流(用于网页播放)http://你的云主机IP地址:8080/live/test.m3u8
(HLS流会有几秒到几十秒的延迟)
SRS的优势:功能丰富(支持集群、DVR、防盗链等),性能优异,中文文档好。
方案二:Nginx with RTMP Module
Nginx通过添加rtmp模块也可以变成流媒体服务器,配置灵活。
安装步骤(CentOS 7):
1、安装依赖:
yum install -y epel-release yum install -y gcc-c++ pcre-devel openssl-devel zlib-devel wget
2、下载Nginx和RTMP模块源码并编译:
# 创建目录并进入 mkdir nginx-build && cd nginx-build # 下载Nginx源码 wget http://nginx.org/download/nginx-1.20.2.tar.gz tar -zxvf nginx-1.20.2.tar.gz # 下载RTMP模块源码 wget https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz tar -zxvf v1.2.2.tar.gz # 编译安装 cd nginx-1.20.2 ./configure --add-module=../nginx-rtmp-module-1.2.2 --with-http_ssl_module make && make install
3、配置Nginx:
编辑/usr/local/nginx/conf/nginx.conf
文件,在末尾添加RTMP配置:
rtmp { server { listen 1935; application live { live on; hls on; hls_path /tmp/hls; hls_fragment 5s; } } }
4、启动Nginx:
/usr/local/nginx/sbin/nginx
5、测试推拉流:方法与SRS相同。
观众需要通过一个网页来观看直播,你需要一个支持播放HLS或FLV流的网页播放器。
1、推荐播放器:
Video.js功能强大,插件丰富。
DPlayer国产现代播放器,颜值高。
FLV.jsB站开源,能直接在浏览器用JS播放FLV流。
CKPlayer老牌flash/html5播放器。
2、简单示例(使用HLS和Video.js):
* 在你的网站HTML中引入Video.js库。
* 创建一个<video>
标签并初始化。
<head> <link href="https://vjs.zencdn.net/7.20.3/video-js.css" rel="stylesheet" /> </head> <body> <video id="my-video" class="video-js vjs-default-skin" controls preload="auto" width="640" height="360" data-setup="{}" > <source src="http://你的域名:8080/live/test.m3u8" type="application/x-mpegURL" /> </video> <script src="https://vjs.zencdn.net/7.20.3/video.js"></script> </body>
1、使用CDN加速:
* 单台云主机的带宽和并发能力有限,且观众分布各地网络质量不一。
解决方案将云主机作为源站,推流到源站,然后通过CDN(内容分发网络) 分发直播流到全球节点,阿里云、腾讯云都有成熟的直播CDN产品。
2、安全性:
防盗链在SRS/Nginx配置中设置on_publish
和on_play
钩子,验证推流和拉流的URL是否合法(通过Token/时间戳)。
HTTPS为你的域名申请SSL证书,让HLS拉流通过HTTPS进行,防止内容被篡改。
3、后台管理:
* 你可以用PHP/Java/Python等语言编写一个后台管理系统,通过调用SRS的HTTP API接口来管理流和获取服务器状态。
新手入门从SRS开始,它是为直播量身定做的,更容易成功。
成本意识密切关注云主机的带宽流量消耗,这是主要成本。
性能瓶颈单机性能有限,当观众数上来后,首先要考虑的是用CDN分担负载,而不是无限升级服务器配置。
合法性搭建直播平台涉及视听内容传播,请务必遵守当地法律法规,履行备案手续,并加强对直播内容的监管,避免违规。
这个过程涉及较多技术细节,如果遇到问题,多查阅官方文档和社区讨论,祝你搭建成功!
文章摘自:https://idc.huochengrm.cn/zj/15886.html
评论
空静慧
回复云主机搭建直播平台需配置服务器、流媒体服务器和直播软件,确保稳定流畅直播。