从零开始搭建流媒体服务器,详细步骤与实用指南

2026-07-25 09:52:36 207阅读
是面向个人、小型工作室的**从零开始搭建流媒体服务器**详细实用指南,先梳理搭建前提:需准备适配个人直播、家庭私有影视串流等场景的硬件设备、稳定公网/局域网带宽;再聚焦主流轻量化/开源方案,重点推荐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 oktest 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更方便:

  1. 打开OBS,点击“设置”→“流”;
  2. 流类型选“自定义流媒体服务器”;
  3. URL填:rtmp://你的服务器IP/live
  4. 流密钥填:stream1(和推流地址里的流名称一致);
  5. 点击“确定”,再点击“开始推流”。

播放测试

  • 播放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的云服务器,要么给家里的网络做端口映射(注意安全)。

文章版权声明:除非注明,否则均为亚朵原创文章,转载或复制请以超链接形式并注明出处。