首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Gstreamer和Kvssink将多个RTSP流h265格式记录到动态视频流

用Gstreamer和Kvssink将多个RTSP流h265格式记录到动态视频流
EN

Stack Overflow用户
提问于 2021-09-14 16:05:12
回答 1查看 367关注 0票数 0

我需要记录4个RTSP流到一个单一流的动态视频流。视频流必须像这样放置在视频中:

代码语言:javascript
复制
 ---------- ---------- 
|          |          |
| STREAM 1 | STREAM 2 |
|          |          |
|----------|----------|
|          |          |
| STREAM 3 | STREAM 4 |
|          |          |
 ---------- ----------

使用以下命令,我能够插入单个流并使其完美地工作:

代码语言:javascript
复制
gst-launch-1.0 rtspsrc user-id="admin" user-pw="password" location="rtsp://admin:password@192.168.0.1:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! rtph265depay ! h265parse ! video/x-h265, alignment=au ! kvssink stream-name="test-stream" storage-size=512 access-key="access-key" secret-key="secret-key" aws-region="us-east-1" 

但是,我的目标是将一组流插入到同一视频流中。为此,我找到了下面使用videomixer的示例:

代码语言:javascript
复制
gst-launch-1.0 -e rtspsrc location=rtsp_url1 ! rtph264depay ! h264parse ! decodebin ! videoconvert! m.sink_0 \
                rtspsrc location=rtsp_url2 ! rtph264depay ! h264parse ! decodebin ! videoconvert! m.sink_1 \
                rtspsrc location=rtsp_url3 ! rtph264depay ! h264parse ! decodebin ! videoconvert! m.sink_2 \
                rtspsrc location=rtsp_url4 ! rtph264depay ! h264parse ! decodebin ! videoconvert! m.sink_3 \
                videomixer name=m sink_1::xpos=1280 sink_2::ypos=720 sink_3::xpos=1280 sink_3::ypos=720 ! x264enc ! mp4mux ! filesink location=./out.mp4 sync=true

我仅将该示例修改为两个流,并使用如下命令使其在容器内工作:

代码语言:javascript
复制
gst-launch-1.0 -e rtspsrc user-id="admin" user-pw="password" location="rtsp://password@192.168.0.1:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! rtph265depay ! h265parse ! video/x-h265, alignment=au ! libde265dec ! videoconvert ! m.sink_0 \
        rtspsrc user-id="admin" user-pw="password" location="rtsp://password@192.168.0.2:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! rtph265depay ! h265parse ! video/x-h265, alignment=au ! libde265dec ! videoconvert ! m.sink_1 \
        videomixer name=m sink_0::xpos=1080 sink_1::ypos=1080 ! x265enc ! h265parse ! video/x-h265, alignment=au ! kvssink stream-name="test-stream" storage-size=512 access-key="access-key" secret-key="secret-key" aws-region="us-east-1" 

另一种方式是:

代码语言:javascript
复制
gst-launch-1.0 -e videomixer name=mix sink_0::xpos=0 sink_0::ypos=0 sink_0::alpha=0 sink_1::xpos=0 sink_1::ypos=0 \
    rtspsrc user-id="admin" user-pw="password" location="rtsp://password@192.168.0.1:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! rtph265depay ! h265parse ! video/x-h265, alignment=au ! libde265dec ! videoconvert ! videoscale ! video/x-raw,width=1920,height=1080 ! mix.sink_0 \
    rtspsrc user-id="admin" user-pw="password" location="rtsp://password@192.168.0.2:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! rtph265depay ! h265parse ! video/x-h265, alignment=au ! libde265dec ! videoconvert ! videoscale ! video/x-raw,width=1920,height=1080 ! mix.sink_1 \
    mix. ! queue ! videoconvert ! x265enc ! queue ! kvssink stream-name="test-stream" storage-size=512 access-key="access-key" secret-key="secret-key" aws-region="us-east-1" 

所讨论的容器来自:

但是,当我登录到并尝试下载一个getClip时,在这两种情况下,我都会得到以下错误:

MissingCodecPrivateDataException

在轨道1的片段中缺少编解码器私有数据。

状态代码: 400

使用GST_DEBUG=1的日志可以在上找到

使用GST_DEBUG=4的日志可以在上找到

你们能告诉我那里发生了什么吗?

或者,如果可能的话,帮助我找到这个错误的解决方案。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-10-05 20:00:03

对于那些寻找相同解决方案的人,我设法通过替换被composer所反对的composer来实现它的工作,下面是我使用的命令的一个示例,它起了作用:

代码语言:javascript
复制
gst-launch-1.0 rtspsrc location="rtsp://password@192.168.0.1:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! decodebin ! videoconvert ! comp.sink_0 \
rtspsrc location="rtsp://password@192.168.0.2:554/cam/realmonitor?channel=1&subtype=0" short-header=TRUE ! decodebin ! videoconvert ! comp.sink_1 \
compositor name=comp sink_0::xpos=0 sink_1::xpos=1280 ! x264enc ! kvssink stream-name="test-stream" storage-size=512 access-key="access-key" secret-key="secret-key" aws-region="us-east-1" 

但是,我只能使用h264来完成这个任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69181119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档