He de red IP de la cámara(Canon VB-M40). Este soporte de la cámara ONVIF protocolo. Estoy implementando su ONVIF funcionalidad en windows utilizando el lenguaje C. Conseguí su RTSP URI utilizando la siguiente solicitud.

snprintf(postData, sizeof(postData),
      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
      "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" "
      "xmlns:tds=\"http://www.onvif.org/ver10/media/wsdl\""
      "xmlns:tt=\"http://www.onvif.org/ver10/schema\">"             
      "<soap:Body>"
      "<tds:GetStreamUri>"
        "<tds:StreamSetup>"
          "<tt:Stream>0</tt:Stream>" 
          "<tt:Transport>" 
            "<tt:Protocol>HTTP</tt:Protocol>" 
          "</tt:Transport>"
        "</tds:StreamSetup>"
        "<tds:ProfileToken>profile1</tds:ProfileToken>"
      "</tds:GetStreamUri>"
        "</soap:Body></soap:Envelope>",
      username, digest_str, nonce_str, time_str); 

y la respuesta es:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope  xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" 
                    xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" 
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                    xmlns:wsa5="http://www.w3.org/2005/08/addressing" 
                    xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" 
                    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
                    xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
                    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
                    xmlns:MC2="http://www.onvif.org/ver10/schema" 
                    xmlns:MC3="http://www.w3.org/2005/05/xmlmime" 
                    xmlns:MC4="http://docs.oasis-open.org/wsn/b-2" 
                    xmlns:MC10="http://www.w3.org/2004/08/xop/include" 
                    xmlns:MC5="http://docs.oasis-open.org/wsrf/bf-2" 
                    xmlns:MC6="http://docs.oasis-open.org/wsn/t-1" 
                    xmlns:CC="http://www.canon.com/ns/networkcamera/onvif/va/schema" 
                    xmlns:MC1="http://www.onvif.org/ver10/media/wsdl" 
                    xmlns:MC8="http://www.onvif.org/ver20/analytics/wsdl/RuleEngineBinding" 
                    xmlns:MC9="http://www.onvif.org/ver20/analytics/wsdl/AnalyticsEngineBinding" 
                    xmlns:MC7="http://www.onvif.org/ver20/analytics/wsdl" 
                    xmlns:ter="http://www.onvif.org/ver10/error" 
                    xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" 
                    xmlns:tns1="http://www.onvif.org/ver10/topics">
    <SOAP-ENV:Header></SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <MC1:GetStreamUriResponse>
            <MC1:MediaUri>
                <MC2:Uri>rtsp://192.168.5.53:8090/profile1=r</MC2:Uri>
                <MC2:InvalidAfterConnect>false</MC2:InvalidAfterConnect>
                <MC2:InvalidAfterReboot>true</MC2:InvalidAfterReboot>
                <MC2:Timeout>PT0M0S</MC2:Timeout>
            </MC1:MediaUri>
        </MC1:GetStreamUriResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

de acuerdo a la especificación ONVIF, una vez que consiga el flujo de URI que debo enviar «DESCRIBIR» la solicitud para el dispositivo. Estoy utilizando este procedimiento porque necesito flujo en TCP.

Mi pregunta es cómo enviar «DESCRIBIR» la solicitud para el Dispositivo y en la que encaje?

Debo enviar esta solicitud en el mismo socket en el que me envió GetStreamURI solicitud. O tengo que crear otro. Y ¿cuál será el formato de la solicitud?

OriginalEl autor Sarfraz Ahmed | 2012-06-08

1 Comentario

  1. 3

    Enviar en el mismo host como GetStreamUri solicitud en el puerto 554 (u otro puerto configurado en el dispositivo para RTSP). Entonces usted tiene que enviar la solicitud de OPCIONES antes de DESCRIBIR. Probablemente devolverá 401 no autorizado de estado y nonce + valor de territorio en su cuerpo. (Estoy utilizando diferentes direcciones, a continuación, usted recibió en su GetStreamUri respuesta).

    Request:
    OPTIONS http://192.168.128.99:80/profile1/media.smp RTSP/1.0\r\n
    CSeq: 1\r\n
    User-Agent: MyAgent\r\n\r\n
    
    Response:
    RTSP/1.0 401 Unauthorized
    CSeq: 1
    Date: Thu Jun 28 05:39:55 2012 GMT
    Expires: Thu Jun 28 05:39:55 2012 GMT
    Cache-Control: must-revalidate
    WWW-Authenticate: Digest realm="iPOLiS", nonce="00000000000000000000000048E02F14"
    

    Leer este reino y nonce valores, debido a que usted necesita para la autorizacion y enviar a otro, autorizó la solicitud de OPCIONES.

    OPTIONS http://192.168.128.99:80/profile1/media.smp RTSP/1.0\r\n
    CSeq: 2\r\n
    Authorization: Digest username="admin", realm="iPOLiS", nonce="00000000000000000000000048E02F14", uri="http://192.168.128.99:80/profile1/media.smp", response="23a5a81fb98b6cb29368eba060ba31b9"\r\n
    User-Agent: MyAgent\r\n\r\n
    

    Respuesta es generar de esta manera

    Luego vienen DESCRIBIR solicitud

    DESCRIBE http://192.168.128.99:80/profile1/media.smp RTSP/1.0\r\n
    CSeq: 3\r\n
    User-Agent: MyAgent\r\n\r\n
    

    y la respuesta

    RTSP/1.0 200 OK
    CSeq: 3
    Date: Thu Jun 28 05:46:20 2012 GMT
    Expires: Thu Jun 28 05:46:20 2012 GMT
    Content-Base: http://192.168.128.99:554/profile1/media.smp/
    Content-Type: application/sdp
    Content-Length: 498
    x-Accept-Retransmit: our-retransmit
    x-Accept-Dynamic-Rate: 1
    Cache-Control: must-revalidate
    
    v=0
    o=- 0 0 IN IP4 192.168.128.9
    s=Media Presentation
    i=samsung
    c=IN IP4 0.0.0.0
    b=AS:384128
    t=0 0
    a=control:http://192.168.128.99:554/profile1/media.smp
    a=range:npt=now-
    m=video 40336 RTP/AVP 26
    b=AS:384000
    a=rtpmap:26 JPEG/90000
    a=control:http://192.168.128.99:554/profile1/media.smp/trackID=v
    a=cliprect:0,0,768,1024
    a=framesize:26 1024-768
    a=framerate:5.0
    m=audio 40338 RTP/AVP 0
    b=AS:64
    a=rtpmap:0 PCMU/8000
    a=control:http://192.168.128.99:554/profile1/media.smp/trackID=a
    

    de esta respuesta de la dirección en un=control:http://192.168.128.99:554/profile1/medios de comunicación.smp/trackID=v debe ser analizado por los medios de comunicación m=video (es un protocolo SDP). Eso es ¿hasta qué punto puedo llegar. Siguiente procedimiento se debe realizar la INSTALACIÓN de solicitud con la información del transporte y, a continuación, enviar solicitud de JUEGO. Usted debe escuchar en el puerto especificado en el programa de INSTALACIÓN de solicitud para recibir las imágenes.

    Como GetStreamUri volver rtsp://192.168.5.53:8090/profile1=r, el servidor RTSP para el contacto no está en el puerto 554.

    OriginalEl autor DaNY

Dejar respuesta

Please enter your comment!
Please enter your name here