欢迎光临
我们一直在努力

Ubuntu 搭建 RTSP 服务器:本地视频推流实战(附局域网访问教程)

在开发或测试中,经常需要将本地视频文件以 RTSP 流的形式共享,方便局域网内其他设备(如 Windows 电脑、手机)访问。本文将详细介绍如何在 Ubuntu 系统中搭建 RTSP 服务器,并用 FFmpeg 推送本地视频流,最后在 Windows 上通过 VLC 播放,全程实操无坑,新手也能轻松上手。

一、为什么需要单独搭建 RTSP 服务器?

很多人尝试用 ffmpeg -f rtsp 直接推流时会遇到 Connection refused 错误,原因是:FFmpeg 本身不自带完整的 RTSP 服务器功能,它更擅长处理音视频编码 / 推流,而 RTSP 服务器需要专门的程序来实现会话管理、协议交互等功能。

因此,我们需要:

  • 搭建一个独立的 RTSP 服务器(推荐轻量级的 rtsp-simple-server)
  • 用 FFmpeg 将本地视频推送到该服务器
  • 局域网内的设备通过服务器 IP 访问 RTSP 流
  • 二、准备工作

    环境要求

    • 操作系统:Ubuntu 20.04/22.04(其他版本类似)
    • 本地视频文件:如 test.mp4(建议放在容易访问的路径,如 ~/videos/)
    • 工具:ffmpeg(处理视频流)、rtsp-simple-server(RTSP 服务器)
    • 局域网环境:Ubuntu 服务器和 Windows 客户端需在同一网段

    三、详细步骤

    步骤 1:安装 FFmpeg(视频处理工具)

    FFmpeg 用于读取本地视频并推送到 RTSP 服务器,先确保已安装:

    # 更新软件源
    sudo apt update

    # 安装 FFmpeg
    sudo apt install ffmpeg -y

    # 验证安装(输出版本信息即成功)
    ffmpeg -version

    步骤 2:搭建 RTSP 服务器(rtsp-simple-server)

    rtsp-simple-server 是一款轻量级、配置简单的 RTSP 服务器,支持 Linux、Windows 等多平台,非常适合新手。

    2.1 下载服务器程序

    打开 Ubuntu 终端,执行以下命令下载适合 Linux 的 64 位版本(版本号可根据最新发布调整):

    # 下载压缩包(如果下载慢,可手动到 GitHub 下载)
    wget https://github.com/aler9/rtsp-simple-server/releases/download/v0.21.6/rtsp-simple-server_v0.21.6_linux_amd64.tar.gz

    手动下载地址:rtsp-simple-server GitHub Releases,选择 linux_amd64 版本。

    2.2 解压并启动服务器

    # 解压压缩包
    tar -zxvf rtsp-simple-server_v0.21.6_linux_amd64.tar.gz

    # 进入解压后的目录
    cd rtsp-simple-server_v0.21.6_linux_amd64

    # 启动 RTSP 服务器(默认配置,监听 8554 端口)
    ./rtsp-simple-server

    启动成功后,终端会显示:

    2025/10/30 16:00:00 I [0/0] rtsp-simple-server v0.21.6
    2025/10/30 16:00:00 I [0/0] [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
    2025/10/30 16:00:00 I [0/0] server is ready

    注意:保持此终端开启,关闭终端会导致服务器停止运行。

     示例如下:

    步骤 3:用 FFmpeg 推送本地视频到 RTSP 服务器

    打开新的终端(不要关闭服务器终端),执行以下命令推送视频流:

    3.1 基础推流命令(推荐)

    # 替换为你的视频文件路径(绝对路径或相对路径均可)
    VIDEO_PATH="./20250912_wangjing.mp4"

    # 推流命令
    ffmpeg -re -stream_loop -1 -i ./20250912_wangjing.mp4 \\
    -c:v copy -c:a copy \\
    -f rtsp -rtsp_transport tcp \\
    rtsp://127.0.0.1:8554/mystream

    示例如下:
    命令参数说明:
    • -re:按视频实际帧率读取(避免一次性读完文件)
    • -i "$VIDEO_PATH":输入本地视频文件路径
    • -c:v copy -c:a copy:直接复制视频和音频流(不重新编码,节省性能)
    • -f rtsp:输出格式为 RTSP
    • -rtsp_transport tcp:使用 TCP 传输(局域网内更稳定,避免 UDP 丢包)
    • rtsp://127.0.0.1:8554/mystream:推流目标地址(127.0.0.1 是本地服务器,mystream 是自定义流名称)
    • -stream_loop -1:
      • stream_loop 是 FFmpeg 用于设置输入文件循环次数的参数。
        • -1 表示无限循环(视频播放结束后立即重新开始);
        • 循环 1 遍:输入文件播放 1 次后停止,参数设为0(默认不循环就是播放 1 遍)。
        • -re -stream_loop 0
        • 循环 2 遍:输入文件播放 2 次后停止,参数设为1 -re -stream_loop 1 (注意:次数是 “循环次数”,即 “播放次数 – 1”)。
        • 循环 20 遍:输入文件播放 20 次后停止,参数设为19。
        • -re -stream_loop 19
        • 无数遍(无限循环):输入文件持续循环播放,参数设为-1。
        • -re -stream_loop -1
      • 注意:该参数必须放在 -i(输入文件)之前,否则无效。
    3.2 推流成功的标志

    终端会持续输出视频帧信息,类似:

    frame= 250 fps= 25 q=-1.0 Lsize=N/A time=00:00:10.00 bitrate=N/A speed=1.01x

    示例如下:

    表示视频正在以 25fps 的速度推送,推流成功。

    3.3 特殊情况处理(视频编码不兼容)

    如果视频编码不被 RTSP 支持(如某些特殊编码的 MP4),推送可能失败,此时需要重新编码:

    ffmpeg -re -i "$VIDEO_PATH" \\
    -c:v libx264 -preset ultrafast -crf 25 \\ # 视频重新编码为 H.264
    -c:a aac -b:a 128k \\ # 音频重新编码为 AAC
    -f rtsp -rtsp_transport tcp \\
    rtsp://127.0.0.1:8554/mystream

    步骤 4:获取 Ubuntu 服务器的局域网 IP

    Windows 电脑需要通过 Ubuntu 的 IP 访问 RTSP 流,先在 Ubuntu 终端中查询 IP:

    ip addr show

    在输出中找到局域网 IP(通常在 wlan0 或 eth0 下的 inet 字段),例如:192.168.2.18(本文以此为例,实际以你的 IP 为准)。

    步骤 5:在 Windows 电脑上访问 RTSP 流

    局域网内的 Windows 电脑需使用支持 RTSP 协议的播放器,推荐免费的 VLC 播放器。

    5.1 安装 VLC 播放器
    • 下载地址:VLC 官网
    • 选择 Windows 版本,按提示安装即可。
    5.2 播放 RTSP 流
  • 打开 VLC 播放器,点击菜单栏 媒体 → 打开网络串流(或按快捷键 Ctrl+N)。
  •        

  • 在 “网络 URL” 输入框中填写 RTSP 流地址,格式为: rtsp://[Ubuntu的IP]:8554/mystream
    例如:rtsp://192.168.2.18:8554/mystream(替换为你的 Ubuntu IP)。
  • 点击 “播放”,等待 1-2 秒,即可看到 Ubuntu 推送的视频画面。
  • 四、常见问题与解决方案

    1. RTSP 服务器启动失败(端口被占用)

    • 错误表现:终端显示 address already in use
    • 解决:
    • 查看占用 8554 端口的进程: sudo lsof -i :8554
    • 杀死对应进程(替换 PID 为实际进程号): sudo kill -9 PID
    • 若无法 kill,可修改服务器端口:编辑 rtsp-simple-server 目录下的 rtsp-simple-server.yml,将 rtspPort: 8554 改为 8555,重启服务器后,推流和访问地址也需改为 8555 端口。

    2. Windows 无法连接 RTSP 流(Connection refused)

    • 检查网络连通性:在 Windows cmd 中执行 ping 192.168.2.18,确保能 ping 通 Ubuntu。
    • 开放 Ubuntu 防火墙端口(以 8554 为例): sudo ufw allow 8554/tcp
    • 确认推流地址和访问地址的端口、流名称一致(如都是 8554 和 mystream)。

    3. 视频卡顿或无法播放

    • 尝试将推流命令中的 tcp 改为 udp(适合网络稳定的局域网): ffmpeg -re -i 视频路径 -c:v copy -c:a copy -f rtsp -rtsp_transport udp rtsp://127.0.0.1:8554/mystream
    • 若视频分辨率过高(如 4K),可降低分辨率后推送: ffmpeg -re -i 视频路径 -s 1280×720 -c:v libx264 -c:a aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/mystream

    五、总结

    本文通过 rtsp-simple-server 搭建 RTSP 服务器,结合 FFmpeg 推送本地视频流,实现了局域网内的 RTSP 视频共享。核心步骤如下:

  • 安装 FFmpeg 和 rtsp-simple-server
  • 启动 RTSP 服务器(监听 8554 端口)
  • 用 FFmpeg 将本地视频推送到服务器
  • Windows 客户端通过 VLC 访问 RTSP 流
  • 这种方法稳定可靠,适用于大多数 Ubuntu 版本,且配置简单,非常适合新手快速上手。如果需要推送实时摄像头画面,只需将 FFmpeg 的输入源(-i)改为摄像头设备(如 /dev/video0)即可,原理相同。

    如果觉得本文有帮助,欢迎点赞收藏,也欢迎在评论区分享你的实践经验!

    赞(0)
    未经允许不得转载:171主机测评 » Ubuntu 搭建 RTSP 服务器:本地视频推流实战(附局域网访问教程)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址