使用Gstreamer进行RTSP推流
使用Gstreamer进行RTSP推流
背景
以前使用 Gstreamer 推过RTP流,主要涉及到 rtph264pay
插件:
gst-launch-1.0 videotestsrc ! video/x-raw,framerate=30/1 ! clockoverlay ! mpph264enc ! queue ! h264parse ! rtph264pay ! udpsink host=192.168.1.104 port=1234
使用vlc打开需要配置sdp文件,前面有提到过:https://notes.z-dd.online/2024/06/08/RTP%E8%A7%86%E9%A2%91%E6%B5%81%E7%9A%84SDP%E6%96%87%E4%BB%B6/
最近尝试了推RTSP流,要稍微麻烦点:
# 1. 运行mediamtx流媒体服务器
./mediamtx &
# 2. 运行gstreamer命令
gst-launch-1.0 videotestsrc ! video/x-raw,framerate=30/1 ! clockoverlay text="Dev:0" time-format="%H:%M:%S" ! mpph264enc ! rtspclientsink protocols=udp latency=0 location=rtsp://127.0.0.1:8554/1
# 3. 使用VLC打开网络流:rtsp://运行上面命令的机器IP:8554/1
以上命令已在RK3588平台及X86平台已验证。
这里的视频输入源(videotestsrc测试源)可以换成其他的,比如v4l2的摄像头输入等;
H264编码器(RK平台的编码器插件mpph264enc)也可以换成其他的,比如基于 libx264 的通用编码器插件–x264enc
。
使用Gstreamer进行RTSP推流必需的2个条件:
- gstreamer的插件–rtspclientsink
- MediaMTX
下面就分别来看看这个两个东东。
rtspclientsink插件
rtspclientsink插件:
Send data over the network via RTSP RECORD(RFC 2326)
Gstreamer官方说明:https://gstreamer.freedesktop.org/documentation/rtspclientsink/index.html?gi-language=c
它是包含在gstreamer1.0-rtsp
(GStreamer RTSP Server Library)这个包里,所以需要确保安装它:
sudo apt install gstreamer1.0-rtsp
MediaMTX
MediaMTX(原rtsp-simple-server)是个开源的轻量级流媒体服务器。
MediaMTX (formerly rtsp-simple-server) is a ready-to-use and zero-dependency real-time media server and media proxy that allows to publish, read, proxy, record and playback video and audio streams. It has been conceived as a “media router” that routes media streams from one end to the other.
项目地址:https://github.com/bluenviron/mediamtx
使用也很简单,如果不想自己源码编译,可以直接在release页下载对应的二进制包,作者提供了多个平台的包,包里面就三个文件:主程序(mediamtx)、配置文件(mediamtx.yml)、LICENSE文件。
如果不需要特殊配置,一般以默认配置直接运行就行:./mediamtx
。
后面如果有时间可以好好研究下这个流媒体服务器,星星数挺多的。