2016-04-24 34 views
0

我想使用RTSP協議連接到IP攝像機。我爲此使用Visual C++。我搜索並找到cURL庫並從libcurl網站下載rtsp.c
我用CMake將cURL的代碼轉換爲適用於Visual Studio的sln文件,然後我創建了一個解決方案並執行其他步驟來運行rtsp.c示例。 現在我可以連接到我的網絡攝像機rtsp.c並收到沒有運行時錯誤,但我收到「ICMP Destination Unreachable (Port Unreachable)WireShark並沒有流接收。
另一方面,我可以連接到我的IP攝像機與VLC播放器。我更改了端口號rtsp.c,但問題沒有解決。
我看了this但我不知道問題在哪裏?我該如何解決它?爲什麼RTSP播放命令在RTP端口接收設備篡改數據包?

編輯:
我用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> 

EDITED-2:
我搜索,現在我知道上面的消息是一個設備篡改消息,顯示相機上的運動檢測事件,但我不知道爲什麼RTSP Pla y命令在RTP端口接收設備篡改數據包?

回答

0

RTSP資源中,多個媒體流可以聚合在同一個URL中。通常,ONVIF攝像機有三種媒體流:一種用於視頻,一種用於音頻,另一種用於元數據,用於將警報流式傳輸至客戶端。

通過使用Session Description Protocol來描述媒體流,DESCRIBE命令使用RTSP

您應該檢查RTSP資源是如何組織的,可能您正在接收會話中最後一個媒體的數據包。要檢查RTSP流,您可以使用Live555項目中的openRTSP

相關問題