来自 RTSP 流的 gstreamer,更改分辨率

Posted

技术标签:

【中文标题】来自 RTSP 流的 gstreamer,更改分辨率【英文标题】:gstreamer from RTSP stream, change resolution 【发布时间】:2019-02-14 17:36:21 【问题描述】:

我有一个运行 v4l2rtspserver 并传输 H264 编码 1640x1232 帧的 RTSP 流的 Raspberry Pi 零。 我希望gst-launch-1.0 连接到它,更改它的分辨率,然后将其转储到某个地方。

因为我似乎做错了,而且我的 history | grep gst-launch | wc -l 得分超过 500,我想我会寻求帮助。

对于那些想知道这是我的问题的人:Raspberrypi Zero 运行 MotionEyeOS 太慢了,所以我想通过在缩小的视频流(160x120,来自管道)上运行 motion 来优化运动检测或环回设备),同时保留完整的视频流(最好通过 RTSP,但其他任何东西都可以)。 换句话说,我正在尝试将来自相机的输出分成 2 个流并更改一个流的分辨率。

实现此目的的任何其他设置(我尝试了一些:v4l2loopbackffmpeg + ffservermjpeg_streamer 等)都可以。

【问题讨论】:

【参考方案1】:

我终于找到了。所以...假设您使用默认参数运行 v4l2rtspserver,用于动态调整视频大小的 gstreamer 1.0 管道是:

gst-launch-1.0 -e rtspsrc location="rtsp://127.0.0.1:8554/unicast" ! capsfilter caps="application/x-rtp, media=(string)video, payload=(int)96, encoding-name=(string)H264" ! queue ! rtph264depay ! h264parse ! avdec_h264 ! queue ! videoconvert ! videoscale ! video/x-raw,width=160,height=120 ! avenc_h264_omx ! h264parse ! matroskamux ! filesink location=./video.mkv

【讨论】:

以上是关于来自 RTSP 流的 gstreamer,更改分辨率的主要内容,如果未能解决你的问题,请参考以下文章

带有 Gstreamer 流的 OpenCV 具有延迟、缓慢和伪影

来自 RTSP 流的 H.264 解码错误日志

来自RTSP流的H.264解码错误日志

GStreamer - RTSP 到 HLS / mp4

用于 RTSP 流的 OpenCV cvGetTickCount()

如何使用 OpenCV Python 和 GStreamer 后端创建 x264 RTSP 服务器