使用 h264 有效负载时 Parsebin 不与 mpegtsmux 链接

问题描述

问题: 我正在尝试设置一个管道,该管道从不同的 RTSP 源读取,并将视频保存为 mpegts 而无需重新编码。 rtp 负载可以是 h264、h265、不同编码器的 mpegts。

这是我想出来的:
gst-launch-1.0 urisourcebin uri=rtsp://<stream> ! parsebin ! mpegtsmux ! fakesink

当有效载荷为 mpegt 时,它工作得很好,但是当我用 h264 rtp 尝试它时,就出现了链接问题。 我认为 parsebin 产生 stream-format=avc 流,而 mpegtsmux 只能接收字节流。奇怪的是parsebin在bin里面把它转换成avc,原来是byte-stream。

我尝试过的(有一些精炼的例子):

这按规定工作:
videotestsrc ! x264enc ! mpegtsmux ! rtpmp2tpay ! parsebin ! mpegtsmux ! fakesink

这会导致链接错误
videotestsrc ! x264enc ! rtph264pay ! parsebin ! mpegtsmux ! fakesink

这适用于 h264,因为解析器会转换流格式,但相同的管道显然不会为 h265 分叉。而且parsebin里面还有一个h264parse,所以重复了。
videotestsrc ! x264enc ! rtph264pay ! parsebin ! h264parse ! mpegtsmux ! fakesink

没有自动插入,它工作正常,只是对我的用例来说不够通用:
videotestsrc ! x264enc ! rtph264pay ! rtph264depay ! mpegtsmux ! fakesink

同样设置 caps 过滤器也不起作用,因为 parsebin 不会输出字节流

我的问题是,我错过了什么吗?有什么方法可以在 parsebin 中配置 autoplug 以生成字节流。如果没有,有没有办法自动插入h264parse/h265parse 来改变parsebin 后的流格式。

这是在 GST_DEBUG=3 的情况下在 gstreamer 1.18.3 中运行的日志
https://pastebin.com/dJksA4BB

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)