当前位置:网站首页 >  教程

数字化直播转型落地指南:手把手搭建企业级直播平台

时间:2026年06月03日 00:32:33 来源:易频IT社区

环境准备与依赖安装

在开始搭建直播系统之前,我们需要准备一台纯净的Linux服务器。本指南以Ubuntu 20.04 LTS为例,CentOS系统操作逻辑类似,但命令略有不同。我们需要安装编译Nginx及其RTMP模块所必需的依赖库,包括GCC编译器、PCRE库(支持正则表达式)、OpenSSL库(支持HTTPS)和Zlib库(支持数据压缩)。

执行以下命令更新源并安装依赖:

```bash sudo apt-get update sudo apt-get install -y build-essential libpcre3-dev libssl-dev zlib1g-dev ```

安装完成后,建议创建一个专门的工作目录来存放源码文件,保持系统整洁:

```bash mkdir -p ~/nginx-rtmp-build cd ~/nginx-rtmp-build ```

Nginx-RTMP模块源码编译安装

标准的Nginx发行版并不包含RTMP模块,因此我们需要下载Nginx源码以及nginx-rtmp-module源码进行手动编译。这里我们选用Nginx 1.22.0稳定版和nginx-rtmp-module的最新版。

下载Nginx源码包:

```bash wget http://nginx.org/download/nginx-1.22.0.tar.gz tar -zxvf nginx-1.22.0.tar.gz ```

接着,下载nginx-rtmp-module模块源码:

```bash wget https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz tar -zxvf v1.2.2.tar.gz ```

下载并解压完成后,进入Nginx目录进行编译配置。配置参数中,--add-module是关键,用于指定RTMP模块的路径,--with-http_ssl_module是为了后续能配置HTTPS播放流:

```bash cd nginx-1.22.0 ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module-1.2.2 --with-http_ssl_module ```

配置过程中如果没有报错,即可执行编译和安装:

```bash make sudo make install ```

安装完成后,Nginx会被部署在/usr/local/nginx目录下。我们可以通过以下命令检查是否安装成功:

```bash /usr/local/nginx/sbin/nginx -v ```

Nginx核心配置文件详解

配置直播服务是整个搭建过程的核心。我们需要修改Nginx的主配置文件nginx.conf,加入RTMP服务监听、应用配置以及HLS切片设置。HLS(HTTP Live Streaming)协议兼容性最好,适合在Web端直接播放。

使用编辑器打开配置文件:

```bash sudo vim /usr/local/nginx/conf/nginx.conf ```

将原有内容替换为以下完整配置。该配置开启了RTMP服务监听1935端口,并开启了HLS功能,将直播流实时切片为ts文件:

```nginx worker_processes auto; events { worker_connections 1024; } rtmp { server { listen 1935; chunk_size 4096; application live { live on; 开启HLS切片 hls on; 切片文件存放目录 hls_path /usr/local/nginx/html/hls; 每个TS切片包含的秒数 hls_fragment 3; HLS播放列表中保留的切片数量 hls_playlist_length 10; 允许从任何地址推流(生产环境建议配置IP鉴权) allow publish all; 允许从任何地址播放 allow play all; } } } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; location / { root html; index index.html index.htm; } 配置HLS文件的访问路径,解决跨域问题 location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /usr/local/nginx/html; add_header Cache-Control no-cache; add_header Access-Control-Allow-Origin ; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } ```

配置详解:
1. hls_path:指定生成的.m3u8索引文件和.ts视频分片的存储路径,必须与Nginx的html目录相关联以便HTTP访问。
2. hls_fragment:设置为3秒,意味着延迟最低在3-6秒左右,这是延迟与流畅度的平衡点。
3. location /hls:非常重要,它声明了m3u8和ts文件的MIME类型,并添加了跨域头(CORS),确保前端播放器能正常请求资源。

配置保存后,我们需要手动创建HLS文件存储目录,否则推流会报错:

```bash sudo mkdir -p /usr/local/nginx/html/hls sudo chmod -R 777 /usr/local/nginx/html/hls ```

启动服务与防火墙策略

配置文件无误后,启动Nginx服务:

```bash sudo /usr/local/nginx/sbin/nginx ```

如果修改了配置需要重启,使用以下命令:

```bash sudo /usr/local/nginx/sbin/nginx -s reload ```

数字化直播转型落地指南:手把手搭建企业级直播平台

接下来,必须配置防火墙开放1935端口(RTMP推流/拉流)8080端口(HTTP-HLS播放)。Ubuntu默认使用UFW防火墙,执行以下命令:

```bash sudo ufw allow 1935/tcp sudo ufw allow 8080/tcp ```

如果是阿里云或腾讯云服务器,还需要在云服务控制台的安全组中,添加入站规则放行1935和8080端口,否则外网无法访问。

OBS推流端参数配置

服务端搭建完毕后,我们需要在电脑上安装OBS Studio作为推流客户端。安装过程非常简单,官网下载安装包一路“下一步”即可。打开OBS,进入设置 -> 推流页面进行如下配置:

服务: 选择“自定义”
服务器: 输入 rtmp://你的服务器公网IP/live
串流密钥: 自定义一个名称,例如 test_stream

注意,服务器地址中的“live”必须与nginx.conf中配置的application名称完全一致。串流密钥将决定最终的播放地址。

配置完成后,回到OBS主界面,点击“来源”窗口的“+”号,选择“游戏捕获”“窗口采集”添加你需要直播的画面。确认画面正常后,点击右下角的“开始推流”按钮。

观察OBS右下角的状态栏,如果显示带宽占用和码率波动,说明推流成功。此时,查看服务器上的/usr/local/nginx/html/hls目录,应该会自动生成test_stream.m3u8文件和一系列test_stream.ts文件。

前端HLS拉流播放实现

RTMP流主要用于推流,而Web端播放通常采用HLS(m3u8)格式。为了兼容所有浏览器(包括Chrome),我们需要引入hls.js库,因为Chrome原生不支持m3u8播放。

在服务器的/usr/local/nginx/html目录下创建一个播放页面文件:

```bash sudo vim /usr/local/nginx/html/player.html ```

写入以下完整的HTML代码。这段代码集成了hls.js,自动检测浏览器兼容性,并加载我们在OBS中设置的直播流:

```html 企业直播预览 ```

保存文件后,在浏览器中访问http://你的服务器公网IP:8080/player.html。如果OBS正在推流,你应该能在浏览器中看到延迟约为3-10秒的直播画面。

直播延迟与性能优化

虽然上述配置已经可用,但在企业实际应用中,我们需要对延迟和并发性能进行微调。以下是三个关键的优化方向:

1. 降低延迟配置:
修改nginx.conf中的RTM块和HLS块参数。将hls_fragment设置为2秒甚至1秒,并开启hls_cleanup自动清理过期切片:

```nginx application live { live on; hls on; hls_path /usr/local/nginx/html/hls; hls_fragment 2; 减少切片时长 hls_playlist_length 5; 减少播放列表长度 hls_cleanup on; 自动删除旧切片,防止磁盘写满 } ```

2. 调整OBS编码设置:
在OBS的设置 -> 输出中,将输出模式改为“高级”。在“串流”选项卡中,关键帧间隔务必设置为2秒,这与服务器的hls_fragment对应。如果关键帧间隔大于切片时长,画面将无法正常播放。同时,CPU使用预设设为“veryfast”或“superfast”以保证编码效率。

3. 开启Gzip压缩与缓存:
在nginx.conf的http块中开启gzip,压缩m3u8索引文件(虽然ts文件本身已压缩,但m3u8文件很小,压缩传输更快):

```nginx gzip on; gzip_types application/vnd.apple.mpegurl; ```

通过以上步骤,你已经从零构建了一个基于Nginx-RTMP的企业级直播平台。该方案不仅支持PC端推流,也支持手机摄像头通过RTMP协议推流,前端播放页面亦可嵌入到任何现有的数字化营销系统中,真正实现了零门槛的数字化直播转型落地。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图