跳到主要内容Ubuntu 搭建 RTSP 服务器:本地视频推流实战及局域网访问 | 极客日志Shell / Bash
Ubuntu 搭建 RTSP 服务器:本地视频推流实战及局域网访问
本文介绍在 Ubuntu 系统下使用 rtsp-simple-server 搭建 RTSP 服务器,并通过 FFmpeg 推送本地视频文件至局域网的方法。主要步骤包括安装 FFmpeg 和服务器程序,配置并启动服务,使用 FFmpeg 命令将视频推送到指定流地址,最后在 Windows 客户端通过 VLC 播放器访问 RTSP 流。文中还涵盖了端口占用处理、防火墙设置及视频编码兼容性等常见问题的解决方案,适用于需要在局域网内共享视频流的开发测试场景。
CodeArtist0 浏览 在开发或测试中,经常需要将本地视频文件以 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
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
2.2 解压并启动服务器
tar -zxvf rtsp-simple-server_v0.21.6_linux_amd64.tar.gz
cd rtsp-simple-server_v0.21.6_linux_amd64
./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(输入文件)之前,否则无效。
循环 2 遍:输入文件播放 2 次后停止,参数设为 1
(注意:次数是'循环次数',即'播放次数 - 1')。
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 \
-c:a aac -b:a 128k \
-f rtsp -rtsp_transport tcp \
rtsp://127.0.0.1:8554/mystream
步骤 4:获取 Ubuntu 服务器的局域网 IP
Windows 电脑需要通过 Ubuntu 的 IP 访问 RTSP 流,先在 Ubuntu 终端中查询 IP:
在输出中找到局域网 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)。
- 点击'播放',等待 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
- 解决:
- 若无法 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。
- 确认推流地址和访问地址的端口、流名称一致(如都是
8554 和 mystream)。
开放 Ubuntu 防火墙端口(以 8554 为例):
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 视频共享。核心步骤如下:
- 安装 FFmpeg 和 rtsp-simple-server
- 启动 RTSP 服务器(监听 8554 端口)
- 用 FFmpeg 将本地视频推送到服务器
- Windows 客户端通过 VLC 访问 RTSP 流
这种方法稳定可靠,适用于大多数 Ubuntu 版本,且配置简单。如果需要推送实时摄像头画面,只需将 FFmpeg 的输入源(-i)改为摄像头设备(如 /dev/video0)即可,原理相同。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- 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