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

标签 c libcurl rtsp ip-camera onvif

我想使用 RTSP 协议(protocol)连接到网络摄像机。我使用 Visual C++ 来实现此目的。我搜索并找到cURL库并下载了rtsp.c来自libcurl网站。
我用过CMake将 cURL 代码转换为适合 Visual Studio 的 sln 文件,然后我创建了一个解决方案并执行其他步骤来运行 rtsp.c例子。 现在我可以使用 rtsp.c 连接到我的网络摄像机并没有收到运行时错误,但我在 ICMP Destination Unreachable (Port Unreachable) 上收到“WireShark ”并且没有流接收。
在另一侧,我可以使用 VLC 播放器连接到我的 IP 摄像机。我更改了 rtsp.c 上的端口号但问题并没有解决。
我读过this但我不知道问题出在哪里?我该如何解决这个问题?

编辑:
我用过this RTSP codethis 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>

编辑-2:
我搜索过,现在我知道上面的消息是设备篡改消息,显示摄像机上的运动检测事件,但我不知道为什么 RTSP 播放命令在 RTP 端口上接收设备篡改数据包?

最佳答案

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

媒体流使用 Session Description Protocol 进行描述。 ,由 RTSPDESCRIBE 命令使用。

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

关于c - 为什么RTSP播放命令在RTP端口收到设备篡改数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824405/

相关文章:

rtsp - 有没有 libVLC 的替代方案来流式传输和显示 rtsp?

python - mujoco_py.MjModel(<filepath>) 在哪里定义?

c - 在 fifo 中同时读取和写入(在后面)

c - 有没有办法用单个循环和 IPv6 套接字处理 getaddrinfo() 输出?

qt - 如何从 QT 中的 RTSP 流解析 ONVIF 元数据?

ffmpeg - 如果我的计算机在 NAT 之后,如何通过 UDP 使用 RTSP 流式传输视频?

c++ - 创建带有帧缓冲区的 xlib 窗口,我可以直接绘制并使用 XPutImage

ssl - SSL证书链有所不同;如何验证?

c++ - 使用 libcurl 下载 UTF-8 文件(ANSI 工作正常)

curl - 在没有实际传输的情况下在 libcurl 中执行 SFTP/FTP 命令