我找到了一个基于gst-launch的工作示例,用于通过RTP发送和接收视频流。我已将它们改写为C.发件人工作正常,但收件人却没有。我有2台计算机,A和B.当流B-> A时,它工作正常,但是当A-> B时,B没有显示流。流来到B(用wireshark检查)。你能看看代码,看看是否有任何我找不到的错误?
这是gst-launch app:
VIDEO_CAPS="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998"
gst-launch-0.10 -v gstrtpbin name=rtpbin latency=100 \
udpsrc caps=$VIDEO_CAPS port=5000 \
! rtpbin.recv_rtp_sink_0 rtpbin. \
! rtph263pdepay \
! ffdec_h263 \
! ffmpegcolorspace \
! autovideosink
udpsrc port=5001 \
! rtpbin.recv_rtcp_sink_0 rtpbin.send_rtcp_src_0 \
! udpsink host=$1 port=5005 sync=false async=false
相应的C代码在[1]上,因为它很长。
答案 0 :(得分:0)
您没有连接到rtpbin中的request-pt-map信号,而是在udpsrc上设置大写字母。一般的想法是rtpbin告诉你“嘿,我有一个新的有效载荷数量,我应该分配给它的上限是多少?”。然后提供您现在直接在udpsrc上设置的大写字母(减去有效负载数)。我不确定这是否会有所帮助,但这就是你应该这样做的方式。使用GST_DEBUG = * rtp *:5运行接收器也可能提供一些线索。