Problemas para obter o "RTSP over HTTP"

2

Existe uma câmera de eixo conectada ao nosso site (camba.tv) através do componente de conexão de um clique do eixo (que atua como proxy). Podemos nos comunicar com esta câmera somente através de http, definindo o proxy para o endereço do nosso servidor OCCC. Se quisermos obter fluxos RTSP (h.264), só nos resta a opção "RTSP over HTTP". Para isso eu tenho seguido a documentação do eixo VAPIX 3 seção 3.3. Emitir pedidos por meio do violinista, mas não recebo nenhuma resposta. Mas quando eu coloco o URL (axrtsphttp: //1.00408CBEA38B/axis-media/media.amp) no windows media player (com proxy definido para o servidor OCCC 212.78.237.156:3128) o player é capaz de obter fluxo RTSP sobre HTTP após Eu criei um pedido de rastreamento de comunicação entre a câmera eo windows media player através de wireshark e a solicitação que traz o fluxo se parece com

 http://1.00408cbea38b/axis-media/media.amp HTTP/1.1

    x-sessioncookie: 619

    User-Agent: Axis AMC

    Host: 1.00408CBEA38B

    Proxy-Connection: Keep-Alive

    Pragma: no-cache

    Authorization: Digest username="root",realm="AXIS_00408CBEA38B",nonce="000a8b40Y0100409c13ac7e6cceb069289041d8feb1691",uri="/axis-media/media.amp",cnonce="9946e2582bd590418c9b70e1b17956c7",nc=00000001,response="f3cab86fc84bfe33719675848e7fdc0a",qop="auth"



    HTTP/1.0 200 OK

    Content-Type: application/x-rtsp-tunnelled

    Date: Tue, 02 Nov 2010 11:45:23 GMT



    RTSP/1.0 200 OK

    CSeq: 1

    Content-Type: application/sdp

    Content-Base: rtsp://1.00408CBEA38B/axis-media/media.amp/

    Date: Tue, 02 Nov 2010 11:45:23 GMT

    Content-Length: 410



    v=0

    o=- 1288698323798001 1288698323798001 IN IP4 1.00408CBEA38B

    s=Media Presentation

    e=NONE

    c=IN IP4 0.0.0.0

    b=AS:50000

    t=0 0

    a=control:*

    a=range:npt=0.000000-

    m=video 0 RTP/AVP 96

    b=AS:50000

    a=framerate:30.0

    a=transform:1,0,0;0,1,0;0,0,1

    a=control:trackID=1

    a=rtpmap:96 H264/90000

    a=fmtp:96 packetization-mode=1; profile-level-id=420029; sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV,aM48gA==

    RTSP/1.0 200 OK

    CSeq: 2

    Session: 3F4763D8; timeout=60

    Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=060922C6;mode="PLAY"

    Date: Tue, 02 Nov 2010 11:45:24 GMT



    RTSP/1.0 200 OK

    CSeq: 3

    Session: 3F4763D8

    Range: npt=0-

    RTP-Info: url=rtsp://1.00408CBEA38B/axis-media/media.amp/trackID=1;seq=7392;rtptime=4190934902

    Date: Tue, 02 Nov 2010 11:45:24 GMT
[Binary Stream Content]

Mas quando copio essa solicitação para o violinista, só obtenho 200 códigos de status com o tipo de conteúdo definido como application / x-rtsp-tunneled e não há dados de fluxo. A única coisa que faço diferente com o fluxo é usar Basic no cabeçalho de autorização em vez de Digest e não obtenho o código de status 401 (Un autorizado). Alguém pode explicar o que está acontecendo aqui? Como posso escrever sequências de solicitação para obter fluxo no violinista? Se for necessário, posso fazer o upload do dump de solicitação wireshark em algum lugar.

    
por Muhammad Adeel Zahid 19.06.2012 / 09:44

1 resposta

0

"RTSP over HTTP" na verdade consiste em 2 sessões. A primeira é a sessão GET, usada para transmissão de dados e para respostas de comando, e a segunda é a sessão POST, usada para enviar comandos. Você descreveu apenas a primeira sessão. Para obter o fluxo RTSP, você deve implementar a segunda sessão também. A interação deve se parecer com o seguinte:

  1. Crie a primeira conexão e envie a solicitação GET com os cabeçalhos x-sessioncookie e Authorization apropriados.
  2. Crie uma segunda conexão e envie uma solicitação POST com cabeçalhos apropriados e seu comando.
  3. Receba a resposta ao seu comando na primeira conexão como parte da resposta GET.
  4. Continue enviando comandos na segunda conexão e receba dados na primeira conexão.
por 21.05.2015 / 15:48