从零开始搭建流媒体服务器,详细步骤与实用指南
是面向个人、小型工作室的**从零开始搭建流媒体服务器**详细实用指南,先梳理搭建前提:需准备适配个人直播、家庭私有影视串流等场景的硬件设备、稳定公网/局域网带宽;再聚焦主流轻量化/开源方案,重点推荐Linux+Nginx-RTMP-Module(成本低、扩展性强)、Windows上简单易上手的OBS推流相关工具等,全文拆解了从环境配置、推流服务部署,到编码转换适配多终端、基础安全加固的全流程关键步骤,门槛友好,适合入门实操。
随着直播、视频点播的普及,拥有一台自己的流媒体服务器变得越来越实用——无论是想做个人直播、搭建家庭媒体库,还是给朋友分享视频,都能派上用场,本文将以Nginx+RTMP模块为例,带你从零搭建一个轻量、稳定的流媒体服务器,新手也能轻松上手。
什么是流媒体服务器?为什么要自己搭建?
流媒体服务器的核心作用是“实时或按需传输视频/音频流”,让用户不用下载完整文件就能边下边看,相比使用第三方平台,自己搭建的好处是:
- 自由度高:不受平台规则限制,内容完全可控;
- 成本低:只需一台云服务器或闲置电脑,长期使用更划算;
- 可定制:可以根据需求扩展功能(比如添加转码、录制、多平台推流)。
前期准备:选好硬件、软件和系统
在开始搭建前,先准备好这几样东西:
硬件要求
- 云服务器/物理机:个人使用的话,1核2G、带宽5Mbps以上的云服务器(比如阿里云、腾讯云的轻量应用服务器)就够;如果要同时支持多人观看,带宽和配置可以适当提升。
- 闲置电脑:如果不想买云服务器,用家里的闲置电脑装Linux系统也可以(需要确保网络有公网IP,不然只能局域网访问)。
软件选择
我们选Nginx+RTMP模块作为核心组件:
- Nginx:轻量高效的Web服务器,加上RTMP模块后就能支持流媒体传输;
- FFmpeg:强大的视频处理工具,用来推流、转码;
- 播放器:比如VLC(用来测试播放)、OBS Studio(用来推流直播)。
操作系统
推荐用Ubuntu 20.04/22.04,新手友好,软件源丰富,安装配置都很简单。
详细搭建步骤(以Ubuntu为例)
步骤1:更新系统并安装必要工具
先登录服务器,打开终端,执行以下命令更新系统、安装基础工具:
sudo apt update && sudo apt upgrade -y sudo apt install wget curl vim -y
步骤2:安装Nginx和RTMP模块
Ubuntu的官方软件源已经包含了Nginx和RTMP模块,不用复杂的编译安装,直接用包管理器即可:
sudo apt install nginx libnginx-mod-rtmp -y
步骤3:配置Nginx的RTMP服务
安装完成后,需要编辑Nginx的配置文件,开启RTMP功能。
打开配置文件:
sudo vim /etc/nginx/nginx.conf
在文件最末尾(http块外面)添加以下RTMP配置:
rtmp {
server {
listen 1935; # RTMP默认端口
chunk_size 4096;
# 直播应用配置
application live {
live on; # 开启直播
record off; # 关闭录制(如果需要录制可以设为on)
}
}
}
如果还想支持HLS流(让手机浏览器、网页直接播放,因为RTMP很多浏览器不支持),可以修改application live部分:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
# 开启HLS
hls on;
hls_path /tmp/hls; # HLS文件存储路径
hls_fragment 5s; # 每个分片5秒
hls_playlist_length 20s; # 播放列表长度20秒
}
}
}
在http块里面(大概在文件中间位置)添加一个location,让HTTP可以访问HLS文件:
http {
# ... 其他默认配置 ...
server {
listen 80;
server_name _;
# 添加这部分
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/MP2T ts;
}
root /tmp;
add_header Cache-Control no-cache; # 禁止缓存,保证直播实时性
}
}
}
保存并退出(vim中按Esc,输入wq回车)。
步骤4:启动Nginx并验证状态
先测试配置文件是否正确:
sudo nginx -t
如果显示syntax is ok和test is successful,就可以启动Nginx了:
sudo systemctl start nginx sudo systemctl enable nginx # 设为开机自启
查看Nginx状态:
sudo systemctl status nginx
看到active (running)就说明成功了!
推流与播放测试
现在服务器搭好了,我们来测试能不能推流和播放。
推流测试(用FFmpeg)
先在服务器上安装FFmpeg:
sudo apt install ffmpeg -y
找一个本地视频文件(比如test.mp4,可以用wget下载一个测试视频),执行推流命令:
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://你的服务器IP/live/stream1
-re:按帧率推流(模拟实时直播);-i test.mp4:输入视频文件;-c copy:直接复制编码,不转码(更快);rtmp://你的服务器IP/live/stream1:推流地址(stream1是流名称,可以自定义)。
推流测试(用OBS Studio,更适合直播)
如果你想用电脑摄像头或屏幕直播,用OBS更方便:
- 打开OBS,点击“设置”→“流”;
- 流类型选“自定义流媒体服务器”;
- URL填:
rtmp://你的服务器IP/live; - 流密钥填:
stream1(和推流地址里的流名称一致); - 点击“确定”,再点击“开始推流”。
播放测试
- 播放RTMP流:打开VLC播放器,点击“媒体”→“打开网络串流”,输入
rtmp://你的服务器IP/live/stream1,点击播放即可。 - 播放HLS流:如果配置了HLS,在VLC或手机浏览器里输入
http://你的服务器IP/hls/stream1.m3u8,就能播放(很多现代浏览器也支持直接打开HLS链接)。
进阶:给服务器加安全配置
默认情况下,任何人都能推流到你的服务器,得加一点安全措施:
开放必要端口
如果是云服务器,记得在安全组里开放:
- RTMP端口:1935;
- HTTP端口:80(如果用HLS)。
也可以用Ubuntu自带的ufw防火墙:
sudo ufw allow 1935 sudo ufw allow 80 sudo ufw enable
限制推流IP
如果只有你自己推流,可以在Nginx配置里限制推流IP,修改application live部分:
application live {
live on;
record off;
# 只允许你的IP推流
allow publish 你的本地公网IP;
deny publish all;
}
简单的推流认证
更安全的方式是用认证,比如添加一个推流密码,可以在RTMP配置里加一个on_publish回调,不过稍微复杂,新手可以先从限制IP开始。
其他替代方案
如果觉得Nginx+RTMP太麻烦,还有这些选择:
- SRS(Simple Realtime Server):开源的流媒体服务器,配置更简单,功能更全(支持RTMP、HLS、WebRTC等),官网有一键安装脚本;
- Windows方案:如果习惯用Windows,可以下载Windows版的Nginx+RTMP模块,配置步骤和Linux类似;
- 家庭媒体共享:如果只是想在家庭局域网看视频,用Plex、Emby这类媒体服务器软件更合适,自带好看的界面。
搭建流媒体服务器其实没那么难,跟着本文的步骤,半小时就能拥有自己的直播/点播平台,你可以根据需求继续扩展——比如添加视频录制、多码率转码、甚至对接自己的网站,动手试试吧,有问题欢迎在评论区交流!
注:如果是在局域网内搭建,没有公网IP的话,只能在同一局域网内访问;如果需要外网访问,要么用有公网IP的云服务器,要么给家里的网络做端口映射(注意安全)。

