Gstreamer 1.8.3 rtpbin和rtpjpegpayload引发内部数据流错误

时间:2016-08-24 03:00:03

标签: jpeg gstreamer rtp

我使用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示例时,它会一直失败。请帮忙!

1 个答案:

答案 0 :(得分:0)

在使用其他gstreamer版本/配置测试后感到愚蠢,一个简单的错过,在test_play_rtpbin bash函数中,我错过了一点。

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