我不熟悉gstreamer及其开发。我尝试使用Gstreamer Python混合RTP流。客户端发送不同的视频测试源,这些流的混合应该在接收端使用RTP进行。至少有四个参与者可以这样做。在
接收器端将有一个视频测试背景已经链接到它将首先显示。当接收器接收到视频测试源时,视频测试源的混合应该发生并显示在videotestbackground上。在
这是接收端的代码“接收器.py“:http://pastebin.com/dM2LcNM2 以及
以下是客户端“发送”的代码_客户端.py“:http://pastebin.com/33edcQ40
我收到的错误信息如下:
ankit@fh:~/$ ./receiver4.py
Started...
Running...
new ssrc
session 0
ssrc 3217594798
3217594798
filter: /GstPipeline:server/GstCapsFilter:filter (__main__.GstCapsFilter) || Type:: <class '__main__.__main__.GstCapsFilter'>
srcpad1: /GstPipeline:server/GstUDPSrc:udpsrc0.GstPad:src (gst.Pad) || Type::: <type 'gst.Pad'>
sinkpad1: None
Traceback (most recent call last):
File "./receiver4.py", line 132, in on_new_ssrc
lres = gst.Pad.link(srcpad1, sinkpad1)
TypeError: GstPad.link() argument 1 must be gst.Pad, not None
我不明白为什么我收到“sinkpad1”的请求时“没有”。文件中指出,updsrc下沉垫是“应要求”提供的。在
注:请参考代码以引用我用于获取“sinkpad1”的语法和逻辑
我不能让它运行。我费了很大劲才找到解决办法。请有人帮我找出逻辑错误。提前谢谢。在
这是我最终找到的解决办法。:)
我忘了记住我必须使用“rtpbin”,我从客户那里收到它。'gstrtpbin'(
$gst-inspect gstrtpbin
)的Pad属性如下。在根据上面的Pad属性,我必须使用“recv_rtp_sink_u%d”Pad,该Pad只有在请求时才可用。在
我替换/修改了源代码'接收器.py'文件:
^{pr2}$当我继续修复它的时候,还有很多小错误。但我在这里发布的这个问题的主要目标已经实现了。所以,我决定提供答案,以防其他人像我一样陷入这个愚蠢的疏忽和逻辑问题。在
相关问题 更多 >
编程相关推荐