Gstreamer 1.8.3 rtpbin 和 rtpjpegpayload 抛出内部数据流错误

Gstreamer 1.8.3 rtpbin and rtpjpegpayload throws internal data flow error

我正在使用 Gstreamer 版本 1.8.3 和以下管道来发送和接收 rtp/rtcp 流。

变量:

export SAMPLE="overwatch.mjpeg"
export IMAGE_CAPS="image/jpeg,width=1280,height=720,framerate=1/10,format=I420"

听众:

test_play_rtpbin(){
    gst-launch-1.0 --gst-debug=3 rtpbin name=rtpbin \
        udpsrc port=25000 ! application/x-rtp,media=video,payload=26,clock-rate=90000,encoding-name=JPEG,width=1280,height=720 ! rtpbin.recv_rtp_sink_0 \
        rtpbin ! rtpjpegdepay ! queue ! jpegparse ! jpegdec ! videoconvert ! fpsdisplaysink \
        udpsrc port=25001 ! rtpbin.recv_rtcp_sink_0 \
        rtpbin.send_rtcp_src_0 ! udpsink port=25005 host="192.168.0.33" sync=false async=false
}

出版商:

test_record_rtpbin(){
    gst-launch-1.0 --gst-debug=3 rtpbin name=t \
        multifilesrc location=$SAMPLE loop=true ! queue ! $IMAGE_CAPS ! jpegparse ! $IMAGE_CAPS ! queue ! rtpjpegpay pt=26 ! application/x-rtp,media=video,payload=26,clock-rate=90000,encoding-name=JPEG,width=1280,height=720 ! t.send_rtp_sink_0 \
        t.send_rtp_src_0 ! udpsink port=25000 host="192.168.0.33" \
        t.send_rtcp_src_0 ! udpsink port=25001 host="192.168.0.33" sync=false async=false \
        udpsrc port=25005 ! t.recv_rtcp_sink_0
}

但出于某种原因,它一直向我抛出以下错误:

    Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:22.564008753 16798      0x1f6b540 WARN         rtpjitterbuffer rtpjitterbuffer.c:487:calculate_skew: delta - skew: 0:00:09.998355706 too big, reset skew
0:00:26.750010395 16798      0x1f6b540 WARN                 basesrc gstbasesrc.c:2948:gst_base_src_loop:<udpsrc0> error: Internal data flow error.
0:00:26.750027345 16798      0x1f6b540 WARN                 basesrc gstbasesrc.c:2948:gst_base_src_loop:<udpsrc0> error: streaming task paused, reason not-linked (-1)
ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0:
streaming task paused, reason not-linked (-1)
Execution ended after 0:00:26.709638512
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

完整的 5 级日志是 here

样本文件格式如下:

$ mediainfo overwatch.mjpeg 
General
Complete name                            : overwatch.mjpeg
Format                                   : JPEG
File size                                : 1.63 GiB

Image
Format                                   : JPEG
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Compression mode                         : Lossy
Stream size                              : 1.63 GiB (100%)

当我只使用 rtp 时管道工作,但是当我尝试 运行 一个简单的 rtpbin 示例时它总是失败。请帮忙!

用其他gstreamer测试后感觉很笨versions/configurations,一个简单的失误,在test_play_rtpbin bash函数中,我漏掉了一点。

线 rtpbin ! rtpjpegdepay ! queue... 应该是 rtpbin. ! rtpjpegdepay ! queue...