Ativar RTSP em iptables

6

Gostaria de receber um fluxo RTSP via VLC, mas quando tento executar

sudo -u non_root_user cvlc -vvv -I dummy rtsp://ip:port/x.sdp 

Eu recebo:

Unable to determine our source address: This computer has an invalid IP    address: 0x0

Acho que as portas podem estar fechadas, porque quando desativei o firewall, consegui receber o fluxo. Eu gostaria de perguntar como configurar o iptables para que eu possa receber o RTSP. Obrigado.

    
por DropDropped 17.09.2012 / 19:05

1 resposta

5

Você se deparou com um hack feio em Live555 , a biblioteca VLC usa para fornecer o recurso do cliente RTSP. (O código do servidor RTSP do VLC é específico do VLC.) O hack tenta descobrir qual IP sua máquina parece usar na rede local. (Feio como o hack é, eu não sei uma maneira melhor para Live555 fazer isso.)

Você tem que abrir a porta UDP 15947 em seu firewall para corrigir o erro que você encontrou. Essa é a "porta de teste" que o Live555 usa para esse hack.

Tendo feito isso, você também pode precisar abrir portas adicionais para receber seu fluxo, dependendo de como o seu firewall funciona. O RTSP é apenas um protocolo de fluxo control , não um protocolo de transmissão entrega . Pense no RTSP como "botões de videocassete" para o protocolo de entrega de fluxo real: reproduzir, parar, pausar, FF, retroceder .... O cliente RTSP negocia as portas de fluxo entrega com o servidor como parte do " jogar "ação.

O resultado disso é que o cliente (VLC, neste caso) vai pedir ao servidor para enviar a mídia para ele em uma porta específica no comando RTSP SETUP :

SETUP rtsp://192.168.0.1:8554/42.ts/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.0.2 (LIVE555 Streaming Media v2011.12.23)
Transport: RTP/AVP;unicast;client_port=60860-60861

Ou seja, o VLC está dizendo ao servidor RTSP que deseja que a mídia seja entregue nas portas 60860 e 60861 via RTP. O cliente escolhe essas portas aleatoriamente. Se o seu firewall bloqueá-los, ele bloqueará a entrega do fluxo mesmo que a negociação do RTSP tenha sido bem-sucedida.

Na melhor das hipóteses, seu firewall não bloqueará portas tão altas ou terá algum recurso de inspeção stateful que permite desbloqueá-las quando ele vê essa negociação RTSP.

Se o seu firewall bloqueá-lo, você pode depurá-lo com Wireshark . Entende o protocolo RTSP. Clique com o botão direito do mouse em um pacote no fluxo RTSP e diga "Follow TCP stream". Na janela que aparece, localize o comando RTSP SETUP . Em seguida, inicie o Wireshark novamente, desta vez procurando o tráfego UDP nessas portas. (Tudo isso enquanto o cliente RTSP continua baixando o fluxo, ou tentando.)

    
por 18.09.2012 / 05:00