跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Ubuntu 搭建 RTSP 服务器:本地视频推流实战及局域网访问

介绍在 Ubuntu 系统下使用 rtsp-simple-server 搭建 RTSP 服务器,并通过 FFmpeg 推送本地视频文件至局域网的方法。主要步骤包括安装 FFmpeg 和服务器程序,配置并启动服务,使用 FFmpeg 命令将视频推送到指定流地址,最后在 Windows 客户端通过 VLC 播放器访问 RTSP 流。文中还涵盖了端口占用处理、防火墙设置及视频编码兼容性等常见问题的解决方案,适用于需要在局域网内共享视频流的开发测试场景。

CodeArtist发布于 2026/3/23更新于 2026/10/25140 浏览

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

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

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

因此,我们需要:

  1. 搭建一个独立的 RTSP 服务器(推荐轻量级的 rtsp-simple-server)
  2. 用 FFmpeg 将本地视频推送到该服务器
  3. 局域网内的设备通过服务器 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 位版本(版本号可根据最新发布调整):

# 下载压缩包
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 遍)。
      • 循环 20 遍:输入文件播放 20 次后停止,参数设为 19。
      • 无数遍(无限循环):输入文件持续循环播放,参数设为 -1。
    • 注意:该参数必须放在 -i(输入文件)之前,否则无效。
-re -stream_loop -1
-re -stream_loop 19

循环 2 遍:输入文件播放 2 次后停止,参数设为 1

-re -stream_loop 1

(注意:次数是'循环次数',即'播放次数 - 1')。

-re -stream_loop 0
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 流
  1. 打开 VLC 播放器,点击菜单栏 媒体 → 打开网络串流(或按快捷键 Ctrl+N)。

示例图片

示例图片

  1. 点击'播放',等待 1-2 秒,即可看到 Ubuntu 推送的视频画面。

在'网络 URL'输入框中填写 RTSP 流地址,格式为:

rtsp://[Ubuntu 的 IP]:8554/mystream

例如:rtsp://192.168.2.18:8554/mystream(替换为你的 Ubuntu IP)。

四、常见问题与解决方案

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

  • 错误表现:终端显示 address already in use
  • 解决:
    1. 若无法 kill,可修改服务器端口:编辑 rtsp-simple-server 目录下的 rtsp-simple-server.yml,将 rtspPort: 8554 改为 8555,重启服务器后,推流和访问地址也需改为 8555 端口。

杀死对应进程(替换 PID 为实际进程号):

sudo kill -9 PID

查看占用 8554 端口的进程:

sudo lsof -i :8554

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

  • 检查网络连通性:在 Windows cmd 中执行 ping 192.168.2.18,确保能 ping 通 Ubuntu。
  • 确认推流地址和访问地址的端口、流名称一致(如都是 8554 和 mystream)。

开放 Ubuntu 防火墙端口(以 8554 为例):

sudo ufw allow 8554/tcp

3. 视频卡顿或无法播放

若视频分辨率过高(如 4K),可降低分辨率后推送:

ffmpeg -re -i 视频路径 -s 1280x720 -c:v libx264 -c:a aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/mystream

尝试将推流命令中的 tcp 改为 udp(适合网络稳定的局域网):

ffmpeg -re -i 视频路径 -c:v copy -c:a copy -f rtsp -rtsp_transport udp rtsp://127.0.0.1:8554/mystream

五、总结

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

  1. 安装 FFmpeg 和 rtsp-simple-server
  2. 启动 RTSP 服务器(监听 8554 端口)
  3. 用 FFmpeg 将本地视频推送到服务器
  4. Windows 客户端通过 VLC 访问 RTSP 流

这种方法稳定可靠,适用于大多数 Ubuntu 版本,且配置简单。如果需要推送实时摄像头画面,只需将 FFmpeg 的输入源(-i)改为摄像头设备(如 /dev/video0)即可,原理相同。

目录

  1. 一、为什么需要单独搭建 RTSP 服务器?
  2. 二、准备工作
  3. 环境要求
  4. 三、详细步骤
  5. 步骤 1:安装 FFmpeg(视频处理工具)
  6. 更新软件源
  7. 安装 FFmpeg
  8. 验证安装(输出版本信息即成功)
  9. 步骤 2:搭建 RTSP 服务器(rtsp-simple-server)
  10. 2.1 下载服务器程序
  11. 下载压缩包
  12. 2.2 解压并启动服务器
  13. 解压压缩包
  14. 进入解压后的目录
  15. 启动 RTSP 服务器(默认配置,监听 8554 端口)
  16. 步骤 3:用 FFmpeg 推送本地视频到 RTSP 服务器
  17. 3.1 基础推流命令(推荐)
  18. 替换为你的视频文件路径(绝对路径或相对路径均可)
  19. 推流命令
  20. 命令参数说明:
  21. 3.2 推流成功的标志
  22. 3.3 特殊情况处理(视频编码不兼容)
  23. 视频重新编码为 H.264
  24. 音频重新编码为 AAC
  25. 步骤 4:获取 Ubuntu 服务器的局域网 IP
  26. 步骤 5:在 Windows 电脑上访问 RTSP 流
  27. 5.1 安装 VLC 播放器
  28. 5.2 播放 RTSP 流
  29. 四、常见问题与解决方案
  30. 1. RTSP 服务器启动失败(端口被占用)
  31. 2. Windows 无法连接 RTSP 流(Connection refused)
  32. 3. 视频卡顿或无法播放
  33. 五、总结

更多推荐文章

查看全部
  • Google Stitch:基于 AI 的 UI 设计与代码生成工具
  • Java 大数据在智能家居能源消耗趋势预测与节能策略优化中的应用
  • Anthropic Claude Code 源码因 Source Map 配置失误泄露事件复盘
  • 暗黑 2 存档编辑器技术架构:二进制解析与前端可视化实现
  • AI 原理、模型演进与代码实践详解
  • Llama-3.2V-11B CoT 部署:双卡 4090 下 bf16 视觉权重加载优化
  • Python JSON 模板引擎:高效生成复杂结构数据
  • PythonWin7 项目指南:在 Windows 7 上安装 Python 3.8+
  • 滑动窗口算法深度解析:LeetCode 经典例题实战
  • Spring 加载 XML 配置文件的六种常用方式
  • C++ 100 个优质开源项目精选
  • C++ 数据结构:哈希表原理与 STL 实现详解
  • 本地 AI 服务远程安全访问方案:基于 P2P 虚拟组网技术
  • 人工智能、机器学习与深度学习的核心区别
  • 图像坏点矫正算法 (3x3 矩阵处理)
  • Java 程序员选型指南:Cursor、Claude Code 与 Kiro 深度对比
  • 大模型 NLP 开发:行业趋势、核心技能与学习路径
  • 基于 TIA、PLCSIM Advanced 与 Kepware 实现 Fanuc 机器人虚拟仿真调试
  • SketchUp STL 插件实战:优化 3D 打印模型导出流程
  • Windows WSL 环境下 AMD 显卡部署 Stable Diffusion WebUI 与 ComfyUI

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online