从零开始搭建自己的RTSP/RTMP视频服务器

LiveServer2年前 (2023-11-10)教程文章

搭建RTSP视频服务器成为必要选择,特别是在处理移动端或边缘设备的视频数据时。通过此服务器,实现将采集的视频数据回传至服务端,为算法分析提供更强支持。这种架构提升了算法的实时性和准确性,同时中心化管理视频数据。


RTSP/RTMP基本概念

RTSP(Real-Time Streaming Protocol)和RTMP(Real-Time Messaging Protocol)都是实时流媒体传输协议。RTSP主要用于实时流媒体的控制,如播放和暂停。RTMP则直接负责实时音视频数据的传输,在某些实时互动性应用中仍有使用。具体区别如下:

  • RTSP

    1. 控制协议,用于实时流媒体的播放、暂停、定位等操作。

    2. 主要应用于实时音视频的播放控制,如IP摄像头、视频监控和视频会议

  • RTMP

    1. 传输协议,直接负责实时音视频数据的传输。

    2. 曾广泛用于Flash播放器,目前仍在一些实时互动性应用中使用,但在Web上逐渐减少。


构建流程

  1. 配置好rtsp-simple-server基础环境,同时直接启动rtsp-simple-server, 即可成功开启RTMP服务器以及RTSP服务器

  2. 结合使用ffmpeg工具将视频流推送到视频服务器中进行中转

  3. 获取上传后的视频地址,在视频服务器进行渲染以及视频处理等操作,并将处理后的视频流推送到新的视频地址

  4. 通过vlc等视频客户端读取视频地址(如:rtmp://0.0.0.0:8888/live/stream) 实时获取视频流


具体实现

一、配置rtsp-simple-server环境及启动(以ubuntu系统为例)

简述:MediaMTX是一个现成的、零依赖的服务器和代理,允许用户发布、读取和代理实时视频和音频流(https://github.com/bluenviron/mediamtx)

1. 下载安装包。从上述的仓库进行release版本中可以找到相应适合自己系统的的压缩包进行下载和解压,得到rtsp-simple-server及其配置文件.yml。注意,我们这里使用的是简化版本rtsp-simple-server。

2. 配置环境。主要包括三个部分:

(1)安装ffmpeg,可以参考:



sudo apt updatesudo apt install ffmpeg

(2)配置服务器参数。打开压缩包下的rtsp-simple-server.yml配置文件,修改视频流传输接口,监听的地址等等参数。

图片

(3)启动rtsp视频服务脚本,完成视频服务搭建。



# 按照指定的配置文件方式构建rtsp服务器./rtsp-simple-server rtsp-simple-server.yml

图片

二、打开摄像头,将视频流推送到服务器端

推流工具同样采用ffmpeg,进行实时的推流,注意不要中断,命令参考如下:


ffmpeg -y -f v4l2 -i /dev/video0 -f rtsp -preset veryfast -r 60 -rtsp_transport tcp rtsp://rtmp://0.0.0.0:8888/live/stream.sdp

图片

三、不同终端读取视频流

手机、ipad等终端都可以下载vlc等具有打开远程网络url的视频解码器,通过打开“媒体-打开网络串流-输入第二步的推流地址”,即可以在不同终端实时查看视频结果。

图片

注意问题及总结

一、注意问题

1.在远程服务器建立视频服务的时候,需要注意端口映射以及是否开启了服务端口,否则很容易推流和读流不成功。

2. 由于推流和读流都会受到网速宽带的限制,一般会有3-5s的延迟,当然可以通过设置ffmpeg推流时候的参数,如fps等进行适度调整。

二、总结

通过以上流程,我们成功搭建了一个高度可控的实时流媒体处理系统。rtsp-simple-server、ffmpeg、以及vlc等强大工具的协同作用,使我们能够轻松启动并管理RTSP和RTMP服务器,并在其中传递、处理实时视频流。这个流程不仅提供了视频流的高效传输,同时也为算法处理提供了广阔空间。这一整合系统为实时视频应用场景提供了可靠、灵活的解决方案。


相关文章

Nginx搭建Rtmp流媒体服务器,实现视频直播功能(Linux)

Nginx搭建Rtmp流媒体服务器,实现视频直播功能(Linux)

一、环境介绍操作系统:虚拟机运行的Ubuntu18.04 64位系统二、流媒体服务器介绍百度百科: 流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流...

Windows本地搭建rtmp推流服务

Windows本地搭建rtmp推流服务

前言开发时偶尔需要使用rtmp直播流做视频流测试,苦于网上开源的rtmp视频流都已经失效,无奈只好尝试在本地自己搭建一个rtmp的推流服务,方便测试使用一、工具准备Nginx:使用nginx-rtmp...

RTMP 在直播场景的应用与动手实践

RTMP 在直播场景的应用与动手实践

RTMP (Real Time Messaging Protocol)简介RTMP(Real Time Messaging Protocol)是一种设计用于实时数据通信的网络协议,主要用于在 Flas...

Nginx 自建RTMP服务 对海康 大华 直播推流

Nginx 自建RTMP服务 对海康 大华 直播推流

在前面的文章中,我们讲到了利用EasyDarwin搭建直播推流。虽然提供了可视化界面,便于统一管理等优势。但是也存在很多不足。如部分摄像头推流不支持密匙,这时我们便需要自己动手搭建推流服务器了。实验环...

海康 大华 监控设备RTMP实时推流直播

海康 大华 监控设备RTMP实时推流直播

笔者最近的业务中,需要将机房的摄像头的图像在大屏或者html页面展示出来。本文以大华摄像头为例,介绍具体的做法。使用场景设备清单大华摄像头(P20A2-WT)但笔者还是推荐海康。本地同机房主机(Lin...

搭建基于nginx的rtmp直播服务器

搭建基于nginx的rtmp直播服务器

视频教程https://www.bilibili.com/video/av78957794OBS录屏推流教程:https://www.bilibili.com/video/av78808759搭建ng...