我使用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示例时,它会一直失败。请帮忙!
答案 0 :(得分:0)
在使用其他gstreamer版本/配置测试后感到愚蠢,一个简单的错过,在test_play_rtpbin bash函数中,我错过了一点。
这条线rtpbin ! rtpjpegdepay ! queue...
应该是
rtpbin. ! rtpjpegdepay ! queue...