Gstreamer问题,在RTMP流上添加timeoverlay

Gstreamer问题,在RTMP流上添加timeoverlay,gstreamer,nvidia-jetson-nano,Gstreamer,Nvidia Jetson Nano,我需要向rtmp流添加时间覆盖,并保存到磁盘。以下管道(无覆盖层)运行良好: gst-launch-1.0 -v \ rtmpsrc location=rtmp://192.168.x.x/live/0 do-timestamp=true ! queue2 ! flvdemux name=demux \ flvmux name=mux \ demux.video ! queue ! decodebin \ ! nvvidconv \ ! 'video/x-raw(memory:N

我需要向rtmp流添加时间覆盖,并保存到磁盘。以下管道(无覆盖层)运行良好:

gst-launch-1.0 -v \
rtmpsrc location=rtmp://192.168.x.x/live/0 do-timestamp=true ! queue2 ! flvdemux name=demux \
flvmux name=mux \
demux.video ! queue ! decodebin \
    ! nvvidconv \
    ! 'video/x-raw(memory:NVMM),width=1920,height=1080, format=(string)I420, framerate=50/1' \
    ! nvv4l2h264enc ! h264parse \
    ! mux.video \
demux.audio ! queue name="dmx_aud_q" ! mux.audio \
mux.src ! queue name="mux_q" ! filesink location="rtmp.flv"
添加timeoverlay(甚至clockoverlay)后,管道不会运行:

gst-launch-1.0 -v \
rtmpsrc location=rtmp://192.168.0.168/x.x do-timestamp=true ! queue2 ! flvdemux name=demux \
flvmux name=mux \
demux.video ! queue ! decodebin \
    ! timeoverlay \
    ! nvvidconv \
    ! 'video/x-raw(memory:NVMM),width=1920,height=1080, format=(string)I420, framerate=50/1' \
    ! nvv4l2h264enc ! h264parse \
    ! mux.video \
demux.audio ! queue name="dmx_aud_q" ! mux.audio \
mux.src ! queue name="mux_q" ! filesink location="rtmp.flv"
GST_DEBUG=3日志添加在末尾。管道图如下所示

据我所知,在
decodebin
移交给
timeoverlay
时,caps谈判存在一些问题。我不知道如何让timeoverlay以管道可以继续多路复用的方式接受或输出数据。任何有助于了解这里发生了什么,以及如何找到解决方案的帮助都将是巨大的

这是在Nvidia Jetson纳米板上,运行Ubuntu 18.0。(以“nv”开头的插件通常可以替换为其他系统上的常规插件,我相信--
NVVIDCOV
videoconvert
nvv4l2h264enc
omxh264enc

正在将管道设置为暂停。。。 在阻塞模式下打开0:00:00.119491546 834 0x55b9d05600警告 v4l2 gstv4l2object.c:2370:gst_v4l2_对象_添加_交错_模式:0x55b9cf2360 无法确定隔行扫描模式0:00:00.119570298 834
0x55b9d05600警告v4l2 gstv4l2object.c:2370:gst_v4l2_对象_添加_交错_模式:0x55b9cf2360 无法确定隔行扫描模式0:00:00.119623164 834
0x55b9d05600警告v4l2 gstv4l2object.c:2370:gst_v4l2_对象_添加_交错_模式:0x55b9cf2360 无法确定隔行扫描模式0:00:00.119721552 834
0x55b9d05600警告v4l2 gstv4l2object.c:4408:gst_v4l2_对象_探针_帽: 无法使用VIDIOC_CROPCAP探测像素纵横比:未知错误 -1管道正在预滚动…0:00:00.406155973 834 0x55b9a72370警告flvdemux gstflvdemux.c:659:gst_flv_demux_parse_tag_脚本:失败 读标签,跳过 /GstPipeline:pipeline0/GstQueue:dmx\u aud\u q.GstPad:sink:caps= 音频/mpeg,mpegversion=(int)4,framed=(布尔)true, 流格式=(字符串)原始,速率=(int)44100,通道=(int)2, 编解码器_数据=(缓冲区)1210 /GstPipeline:pipeline0/GstQueue:dmx\u aud\u q.GstPad:src:caps= 音频/mpeg,mpegversion=(int)4,framed=(布尔)true, 流格式=(字符串)原始,速率=(int)44100,通道=(int)2, 编解码器_数据=(缓冲区)1210 /GstPipeline:pipeline0/GstFlvMux:mux.GstFlvMuxPad:sink_1:caps= 音频/mpeg,mpegversion=(int)4,framed=(布尔)true, 流格式=(字符串)原始,速率=(int)44100,通道=(int)2, 编解码器_数据=(缓冲区)1210 /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink:caps= 视频/x-h264,流格式=(字符串)avc,宽度=(整数)1920, 高度=(整数)1080, 编解码器_数据=(缓冲区)0140202AFFE100166742002A95A81E0089F9610000300000100000300648401000468CE3C80 /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src:caps= 视频/x-h264,流格式=(字符串)avc,宽度=(整数)1920, 高度=(整数)1080, 编解码器_数据=(缓冲区)0140202AFFE100166742002A95A81E0089F9610000300000100000300648401000468CE3C80 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps=video/x-h264,流格式=(字符串)avc,宽度=(int)1920, 高度=(整数)1080, 编解码器_数据=(缓冲区)0140202AFFE100166742002A95A81E0089F9610000300000100000300648401000468CE3C80 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps=video/x-h264,流格式=(字符串)avc,宽度=(int)1920, 高度=(整数)1080, 编解码器_数据=(缓冲区)0140202AFFE100166742002A95A81E0089F9610000300000100000300648401000468CE3C80 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstH264Parse:h264parse1.GstPad:sink: caps=video/x-h264,流格式=(字符串)avc,宽度=(int)1920, 高度=(整数)1080, 编解码器_数据=(缓冲区)0140202AFFE100166742002A95A81E0089F9610000300000100000300648401000468CE3C80 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps=video/x-h264,流格式=(字符串)avc,宽度=(int)1920, 高度=(整数)1080, 编解码器_数据=(缓冲区)0140202AFFE100166742002A95A81E0089F9610000300000100000300648401000468CE3C80 /GstPipeline:pipeline0/GstDecodeBin:decodebin0.gstghospad:sink:caps =视频/x-h264,流格式=(字符串)avc,宽度=(整数)1920,高度=(整数)1080, 编解码器_数据=(缓冲区)0140202AFFE100166742002A95A81E0089F9610000300000100000300648401000468CE3C80 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstH264Parse:h264parse1.GstPad:src: caps=视频/x-h264,流格式=(字符串)字节流, 宽度=(整数)1920,高度=(整数)1080,帧率=(分数)50/1, 隔行模式=(字符串)渐进,色度格式=(字符串)4:2:0, 位深度luma=(uint)8,位深度色度=(uint)8, 已解析=(布尔值)true,对齐=(字符串)au,配置文件=(字符串)基线, 级别=(字符串)4.2在阻塞模式下打开0:00:00.823485062 834
0x55b9ce8a30警告v4l2 gstv4l2object.c:4408:gst_v4l2_对象_探针_帽: 无法使用VIDIOC_CROPCAP探测像素纵横比:未知错误 -1 0:00:00.823543397 834 0x55b9ce8a30警告v4l2 GSTV4L2对象。c:2370:gst_v4l2_对象_添加_交错_模式:0x7f6807a640 无法确定隔行扫描模式NvMMLiteOpen:Block:BlockType= 261 NVMEDIA:读取vendor.tegra.display-size:状态:6 NvMMLiteBlockCreate:Block:BlockType=261 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/nv4l2decoder:nv4l2decoder0.GstPad:sink: caps=视频/x-h264,流格式=(字符串)字节流, 宽度=(整数)1920,高度=(整数)1080,帧率=(分数)50/1, 隔行模式=(字符串)渐进,色度格式=(字符串)4:2:0, 位深度luma=(uint)8,位深度色度=(uint)8, 已解析=(布尔值)true,对齐=(字符串)au,配置文件=(字符串)基线, 级别=(字符串)4.2 /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstCapsFilter:capsfilter1.GstPad:src: caps=视频/x-h264,流格式=(字符串)字节流, 宽度=(整数)1920,高度=(整数)1080,帧A
... decodebin ! nvvidconv ! 'video/x-raw' !  timeoverlay ! nvvidconv ! 'video/x-raw(memory:NVMM)