É possível retransmitir um fluxo RTP?

2

Eu tenho um caso de uso em que tenho câmera (em um drone, com um pi de framboesa) atrás de um NAT, um servidor VPS com um IP público e um cliente atrás de um NAT onde quero exibir o vídeo. p>

O cliente está executando um software chamado QGroundcontroll que escuta um fluxo RTP em uma porta UDP local, geralmente 5000.

Se eu executo o cliente em uma VPN para obter um IP público, posso exibir o vídeo, mas a VPN está introduzindo muito atraso. Eu posso demonstrar isso executando o seguinte no meu drone:

ffmpeg -f lavfi -re -i testsrc -pix_fmt yuv420p -c:v h264 -f rtp udp://my-client-vpn-fixed-ip:5000

O que me dará uma boa (mas ligeiramente distorcida) imagem de teste.

Outro teste que fiz foi executar o testsrc diretamente no meu cliente da seguinte forma, também com sucesso:

ffmpeg -f lavfi -re -i testsrc -pix_fmt yuv420p -c:v h264 -f rtp udp://127.0.0.1:5000

Então, agora eu tenho trabalhado essa idéia sobre a transmissão do fluxo de rtp através do meu VPS.

Isso é o que eu tentei:

No drone (atrás do NAT):

ffmpeg -f lavfi -re -i testsrc -pix_fmt yuv420p -c:v h264 -f rtp udp://my-virtual-private-server-fixed-ip:5600

No VPS (IP Fixo, rodando Debian, portanto avconv ):

avconv -i udp://127.0.0.1:5600 -map 0:0 -c copy -f rtp udp://127.0.0.1:5500

No cliente (Meu Mac, por trás do NAT):

ffmpeg -i udp://my-virtual-private-server-fixed-ip:5500 -map 0:0 -c copy -f rtp udp://127.0.0.1:5000

Parece que nem avconv nem ffmpeg é capaz de detectar ou se conectar a um fluxo RTP usando -i udp://adress:port . É suposto ser possível? Como?

Obrigado!

    
por Fredrik Falkman 13.01.2018 / 17:25

0 respostas