如何在Ubuntu系统中搭建RTSP服务器?Ubuntu搭建RTSP服务器的详细流程

教程大全 2026-01-08 02:34:51 浏览
目录

在开发或测试中,经常需要将本地视频文件以 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# 安装 FFmpegsudo apt install ffmpeg -y# 验证安装(输出版本信息即成功)ffmpeg -version

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

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

2.1 下载服务器程序

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

# 下载压缩包(如果下载慢,可手动到 GitHub 下载)wget

手动下载地址: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.62025/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 -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 播放器

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 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.exe、ffplay.exe 和 ffprobe.exe。

RTSP3环境配置

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

4安装测试

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

二、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服务器的详细内容,更多相关资料请阅读主机测评网其它文章!

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐