为什么 RTSP 播放命令在 RTP 端口上收到设备篡改数据包?

Why RTSP Play Command Receives Device Tampering Packet on RTP Port?

我想使用 RTSP 协议连接到网络摄像机。为此,我使用 Visual C++。我搜索并找到了 cURL 库并下载了 rtsp.c from libcurl 站点。
我使用了 CMake to convert codes of cURL to suitable sln file for Visual Studio then I created a solution and do other steps to run rtsp.c 示例。 现在我可以使用 rtsp.c and receives no run time error but I receive "ICMP Destination Unreachable (Port Unreachable)" on WireShark 连接到我的 IP 摄像机,但没有流接收。
另一方面,我可以使用 VLC Player 连接到我的 IP 摄像机。我更改了 rtsp.c 上的端口号,但问题没有解决。
我看了this 但我不知道问题出在哪里?我该如何解决?

已编辑:
我使用了 this RTSP code and this RTP code,现在我只收到一个包含此消息的 RTP 数据包:

<?xml version="1.0" encoding="UTF-8"?>  
<tt:MetaDataStream xmnls:tt="http://www.onvif.org/ver10/schema" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2">  
<tt:Event>  
    <wsnt:NotificationMessage>  
          <wsnt:Topic Dialect="http://www.onvif.org/ver10/tec/topicExpression/ConcreteSet">  
           tns1:Device/Tampering  
           </wsnt:Topic>  
           <wsnt:Message>  
                 <tt:Message UtcTime="2016-05-03T00:14:33.775">  
                     <tt:Source>
                         <tt:SimpleItem Name="VideoSourceConfigurationToken" Value="VideoSource0">  
                          </tt:SimpleItem>
                      </tt:Source>
                      <tt:Data>
                          <tt:SimpleItem Name="Level" Value="Trigger">
                          </tt:SimpleItem>
                          <tt:SimpleItem Name="Percentage" Value="32">
                          </tt:SimpleItem>
                       </tt:Data>
                  </tt:Message>
                </wsnt:Message>
           </wsnt:NotificationMessage>
       </tt:Event>

EDITED-2:
我搜索了一下,现在我知道上面的消息是一条设备篡改消息,它在相机上显示了一个运动检测事件,但我不知道为什么 RTSP 播放命令会在 RTP 端口上接收到设备篡改数据包?

在一个 RTSP 资源中,多个媒体流可以聚合在同一个 URL 中。通常,ONVIF 摄像机具有三种媒体流:一种用于视频,一种用于音频,一种用于元数据,以将警报流式传输给客户端。

媒体流使用Session Description Protocol描述,被RTSPDESCRIBE命令使用。

您应该检查 RTSP 资源的组织方式,您可能正在接收会话中最后一个媒体的数据包。要检查 RTSP 流,您可以使用 Live555 项目中的 openRTSP