从零开始搭建自己的RTSP/RTMP视频服务器
搭建RTSP视频服务器成为必要选择,特别是在处理移动端或边缘设备的视频数据时。通过此服务器,实现将采集的视频数据回传至服务端,为算法分析提供更强支持。这种架构提升了算法的实时性和准确性,同时中心化管理视频数据。
RTSP/RTMP基本概念 RTSP(Real-Time Streaming Protocol)和RTMP(Real-Time Messaging Protocol)都是实时流媒体传输协议。RTSP主要用于实时流媒体的控制,如播放和暂停。RTMP则直接负责实时音视频数据的传输,在某些实时互动性应用中仍有使用。具体区别如下: RTSP 1. 控制协议,用于实时流媒体的播放、暂停、定位等操作。 2. 主要应用于实时音视频的播放控制,如IP摄像头、视频监控和视频会议 RTMP 1. 传输协议,直接负责实时音视频数据的传输。 2. 曾广泛用于Flash播放器,目前仍在一些实时互动性应用中使用,但在Web上逐渐减少。 构建流程 配置好rtsp-simple-server基础环境,同时直接启动rtsp-simple-server, 即可成功开启RTMP服务器以及RTSP服务器 结合使用ffmpeg工具将视频流推送到视频服务器中进行中转 获取上传后的视频地址,在视频服务器进行渲染以及视频处理等操作,并将处理后的视频流推送到新的视频地址 通过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,可以参考: (2)配置服务器参数。打开压缩包下的rtsp-simple-server.yml配置文件,修改视频流传输接口,监听的地址等等参数。 (3)启动rtsp视频服务脚本,完成视频服务搭建。 二、打开摄像头,将视频流推送到服务器端 推流工具同样采用ffmpeg,进行实时的推流,注意不要中断,命令参考如下: 三、不同终端读取视频流 手机、ipad等终端都可以下载vlc等具有打开远程网络url的视频解码器,通过打开“媒体-打开网络串流-输入第二步的推流地址”,即可以在不同终端实时查看视频结果。 注意问题及总结 一、注意问题 1.在远程服务器建立视频服务的时候,需要注意端口映射以及是否开启了服务端口,否则很容易推流和读流不成功。 2. 由于推流和读流都会受到网速宽带的限制,一般会有3-5s的延迟,当然可以通过设置ffmpeg推流时候的参数,如fps等进行适度调整。 二、总结 通过以上流程,我们成功搭建了一个高度可控的实时流媒体处理系统。rtsp-simple-server、ffmpeg、以及vlc等强大工具的协同作用,使我们能够轻松启动并管理RTSP和RTMP服务器,并在其中传递、处理实时视频流。这个流程不仅提供了视频流的高效传输,同时也为算法处理提供了广阔空间。这一整合系统为实时视频应用场景提供了可靠、灵活的解决方案。sudo apt updatesudo apt install ffmpeg

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

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







