Python发送和接收RTP数据包

Python发送和接收RTP数据包,python,network-programming,gstreamer,rtp,python-gstreamer,Python,Network Programming,Gstreamer,Rtp,Python Gstreamer,我想通过RTP发送多媒体数据。我想知道的是如何用Python发送和接收RTP数据包。我找到了python类DPKT。但无法找到一个好的参考来可视化如何在RTP中生成每个字段 如果有人能帮助我在服务器上生成和接收rtp数据包,我将不胜感激。经过几天的研究,我能够在ubuntu终端中使用gstreamer来完成上述任务。我的主要工作是学习流的同步。我在gstreamer中使用了RTP和RTCP功能。我将视频垂直分成四部分,从一台电脑发送到另一台电脑,并在第二台电脑上显示。下面是使用的代码 发件人:

我想通过RTP发送多媒体数据。我想知道的是如何用Python发送和接收RTP数据包。我找到了python类DPKT。但无法找到一个好的参考来可视化如何在RTP中生成每个字段


如果有人能帮助我在服务器上生成和接收rtp数据包,我将不胜感激。

经过几天的研究,我能够在ubuntu终端中使用gstreamer来完成上述任务。我的主要工作是学习流的同步。我在gstreamer中使用了RTP和RTCP功能。我将视频垂直分成四部分,从一台电脑发送到另一台电脑,并在第二台电脑上显示。下面是使用的代码

发件人:

接收器:


我能够像预期的那样在一个窗口中接收到四条流。但是仍然没有完全同步流。

您还可以使用
rtpdump
将音频负载从RTP流传输到
SoX
。我最近写了一个小的Python脚本,就是这样做的


我发现GSteamer是一个很好的替代品。必须阅读以了解管道的基本知识。有了gstreamer,我可以通过TCP从一台机器发送音频,从另一台机器收听。现在我正在尝试通过RTP发送视频。非常感谢您的帮助。经过几天的学习,我能够在ubuntu终端中使用gstreamer来完成上述任务。我的主要工作是学习流的同步。我在gstreamer中使用了RTP和RTCP功能。我将视频垂直分为四部分,从一台电脑发送到另一台电脑,并在第二台电脑中显示。下面是使用的代码。来吧,朋友,至少发布您的代码的含义或添加链接以了解gstreamer的基本知识
gst-launch -v \
\
gstrtpbin name=rtpbin1 \
filesrc location=/home/x101.avi ! decodebin ! x264enc ! rtph264pay ! rtpbin1.send_rtp_sink_0 \
rtpbin1.send_rtp_src_0 ! udpsink host=192.168.1.100 port=5011 \
rtpbin1.send_rtcp_src_0 ! udpsink host=192.168.1.100 port=5012 \
udpsrc port=5013 ! rtpbin1.recv_rtcp_sink_0 \
\
gstrtpbin name=rtpbin2 \
filesrc location=/home/x102.avi ! decodebin ! x264enc ! rtph264pay ! rtpbin2.send_rtp_sink_0 \
rtpbin2.send_rtp_src_0 ! udpsink host=192.168.1.100 port=5021 \
rtpbin2.send_rtcp_src_0 ! udpsink host=192.168.1.100 port=5022 \
udpsrc port=5023 ! rtpbin2.recv_rtcp_sink_0 \
\
gstrtpbin name=rtpbin3 \
filesrc location=/home/x103.avi ! decodebin ! x264enc ! rtph264pay ! rtpbin3.send_rtp_sink_0 \
rtpbin3.send_rtp_src_0 ! udpsink host=192.168.1.100 port=5031 \
rtpbin3.send_rtcp_src_0 ! udpsink host=192.168.1.100 port=5032 \
udpsrc port=5033 ! rtpbin3.recv_rtcp_sink_0 \
\
gstrtpbin name=rtpbin4 \
filesrc location=/home/x104.avi ! decodebin ! x264enc ! rtph264pay ! rtpbin4.send_rtp_sink_0 \
rtpbin4.send_rtp_src_0 ! udpsink host=192.168.1.100 port=5041 \
rtpbin4.send_rtcp_src_0 ! udpsink host=192.168.1.100 port=5042 \
udpsrc port=5043 ! rtpbin4.recv_rtcp_sink_0
gst-launch -v \
videomixer name=mix ! ffmpegcolorspace ! autovideosink sync=false async=false \
\
gstrtpbin name=rtpbin1 \
udpsrc port=5011 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01AFeygbCPNLgIgAAADAC7msoAB4sWywA\\=\\=\\,aOvssg\\=\\=\", payload=(int)96, ssrc=(uint)861153369, clock-base=(uint)4026289255, seqnum-base=(uint)30449" ! rtpbin1.recv_rtp_sink_0 rtpbin1. ! rtph264depay ! queue ! ffdec_h264 ! videobox border-alpha=0 top=0 left=0 ! mix. \
udpsrc port=5012 ! rtpbin1.recv_rtcp_sink_0 \
rtpbin1.send_rtcp_src_0 ! udpsink port=5013 host=192.168.1.104 \
\
gstrtpbin name=rtpbin2 \
udpsrc port=5021 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01AFeygbCPNLgIgAAADAC7msoAB4sWywA\\=\\=\\,aOvssg\\=\\=\", payload=(int)96, ssrc=(uint)861153369, clock-base=(uint)4026289255, seqnum-base=(uint)30449" ! rtpbin2.recv_rtp_sink_0 rtpbin2. ! rtph264depay ! queue ! ffdec_h264 ! videobox border-alpha=0 top=-120 left=0 ! mix. \
udpsrc port=5022 ! rtpbin2.recv_rtcp_sink_0 \
rtpbin2.send_rtcp_src_0 ! udpsink port=5023 host=192.168.1.104 \
\
gstrtpbin name=rtpbin3 \
udpsrc port=5031 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01AFeygbCPNLgIgAAADAC7msoAB4sWywA\\=\\=\\,aOvssg\\=\\=\", payload=(int)96, ssrc=(uint)861153369, clock-base=(uint)4026289255, seqnum-base=(uint)30449" ! rtpbin3.recv_rtp_sink_0 rtpbin3. ! rtph264depay ! queue ! ffdec_h264 ! videobox border-alpha=0 top=-240 left=0 ! mix. \
udpsrc port=5032 ! rtpbin3.recv_rtcp_sink_0 \
rtpbin3.send_rtcp_src_0 ! udpsink port=5033 host=192.168.1.104 \
\
gstrtpbin name=rtpbin4 \
udpsrc port=5041 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z01AFeygbCPNLgIgAAADAC7msoAB4sWywA\\=\\=\\,aOvssg\\=\\=\", payload=(int)96, ssrc=(uint)861153369, clock-base=(uint)4026289255, seqnum-base=(uint)30449" ! rtpbin4.recv_rtp_sink_0 rtpbin4. ! rtph264depay ! queue ! ffdec_h264 ! videobox border-alpha=0 top=-360 left=0 ! mix. \
udpsrc port=5042 ! rtpbin4.recv_rtcp_sink_0 \
rtpbin4.send_rtcp_src_0 ! udpsink port=5043 host=192.168.1.104