1. 首页 > 服务器系统 > Ubuntu

如何在Ubuntu系统中搭建RTSP服务器?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

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

 示例如下:

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

步骤 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


示例如下:

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

命令参数说明:

  • -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    

示例如下:

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

表示视频正在以 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)。

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

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

在 “网络 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 1280x720 -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)即可,原理相同。

RTSP服务器连接教程

一、软件安装

1.1 ffmpeg介绍

FFmpeg 是一个开源的音视频处理工具包,广泛应用于数字音视频的录制、转换、以及流媒体功能的实现。无论是技术开发者还是普通用户,FFmpeg 都能帮助您轻松实现音视频相关的需求。

FFmpeg 主要由三个部分组成:

ffmpeg.exe: 负责音视频的格式转换与转码。
ffplay.exe: 提供简单的音视频播放功能。
ffprobe.exe: 用于分析多媒体码流,方便获取视频或音频文件的详细信息。
除了这些工具,FFmpeg 还提供了丰富的开发库,供专业用户开发自己的音视频处理程序。

2. ffmpeg下载

要开始使用FFmpeg,您需要从 FFmpeg官网 下载软件。请按照以下步骤操作:

  • 打开FFmpeg官网。
  • 点击页面上的 Windows 图标,选择适合您的 Windows 系统的安装包。
  • 在“Windows EXE Files”下选择合适版本进行下载。

下载后解压安装包,您会看到三个可执行程序:ffmpeg.exe、ffplay.exe 和 ffprobe.exe。

3 环境配置

为了让系统能够识别并使用FFmpeg的命令,您需要将其路径添加到系统的环境变量中。以下是操作步骤:

  • 打开“控制面板”并进入 系统和安全,然后点击 系统。
  • 选择 高级系统设置,然后点击 环境变量。
  • 在系统变量中找到 Path,点击 编辑,将解压的FFmpeg目录下的 bin 文件夹路径添加到Path中。
  • 点击 确定 保存更改

4 安装测试

完成环境变量配置后,您可以测试是否安装成功:

  • 打开 命令提示符(CMD)。
  • 输入 ffmpeg -version。
  • 如果出现FFmpeg的版本信息,则说明安装成功。

二、RTSP服务连接

2.1 RTSP概念

RTSP (Real-Time Streaming Protocol) 是一种应用层协议,主要用于控制音视频流媒体的传输。通过 RTSP,用户可以通过网络播放实时的音视频内容,这种协议广泛应用于监控摄像头、网络摄像头和直播服务等场景。

RTSP 允许客户端控制流媒体的播放(例如开始、暂停、停止),并支持多种流媒体格式的传输。

2.2 RTSP流转发

使用 FFmpeg,您可以将来自摄像头或其他源的 RTSP 流转发到另一个服务器。下面是 RTSP 流转发的具体步骤。

步骤 1:命令介绍

ffmpeg -i rtsp://admin:password@192.XXX.1.XX:XXX/h264/ch1/main/av_stream -c copy -f rtsp rtsp://47.XXX.XXX.XXX:20014/h264/ch3/main/av_stream

步骤 2:参数详解

-i:指定输入流。该参数后面跟的是输入 RTSP 流的地址,即来自摄像头或其他设备的视频流源。

例如:rtsp://admin:password@192.168.1.62:554/h264/ch1/main/av_stream。

-c copy:表示不对视频或音频进行重新编码,而是直接复制原始流。这可以提高效率,避免额外的编码步骤。

-f rtsp:指定输出格式为 RTSP。

rtsp://47.XXX.XXX.XXX:20014/h264/ch3/main/av_stream:这是输出的目标 RTSP 流地址,FFmpeg 会将从源摄像头接收到的流转发到该地址。

2.3 RTSP流模拟

FFmpeg 还可以通过播放本地的视频文件(如 .mp4)来模拟 RTSP 流,并将其推送到 RTSP 服务器。以下是具体操作步骤。

步骤 1:命令介绍

ffmpeg -re -stream_loop -1 -i test.mp4 -c:v libx264 -preset ultrafast -c:a aac -f rtsp rtsp://47.XXX.XXX.XXX:20014/h264/ch1/main/av_stream

步骤 2:参数详解

-re:该选项告诉 FFmpeg 以本地播放速度读取输入文件,对于实时输出非常有用。它会模拟视频的实时播放,而不是尽可能快地进行输出。

-stream_loop -1:无限循环播放输入流。-1 表示无限循环。

-i test.mp4:指定输入文件 test.mp4,您可以将其替换为其他本地视频文件。

-c:v libx264:指定视频编码器为 libx264,这是 H.264 的视频编码标准,广泛应用于流媒体处理。

-preset ultrafast:选择编码预设,ultrafast 是速度最快的选项,适合实时推流。

-c:a aac:指定音频编码器为 AAC,这是一种常见的音频格式,适合流媒体传输。

-f rtsp:指定输出格式为 RTSP。

rtsp://47.XXX.XXX.XXX:20014/h264/ch1/main/av_stream:这是将模拟的 RTSP 流推送到的目标地址

2.4  RTSP流常见问题排查

无法连接 RTSP 流:请检查以下事项:
RTSP 地址是否正确。

网络连接是否正常。

检查防火墙设置,确保 RTSP 协议所用的端口(通常是 554)未被阻止。

视频卡顿或延迟:
网络带宽不足可能导致流播放卡顿或延迟。您可以尝试降低视频的分辨率或码率,改善播放流畅度。

使用 -b:v 参数设置视频码率,例如:-b:v 800k。

音视频不同步:可以尝试使用以下参数进行同步调整:
-vsync 1:同步视频。

-async 1:同步音频。

以上就是如何在Ubuntu系统中搭建RTSP服务器?Ubuntu搭建RTSP服务器的详细内容,更多相关资料请阅读主机测评网其它文章!

本文由主机测评网发布,不代表主机测评网立场,转载联系作者并注明出处:https://zhuji.jb51.net/ubuntu/8816.html

联系我们

在线咨询:点击这里给我发消息

Q Q:2220678578