Posso transmitir de multicast para um cliente com ffmpeg?

1

Estou tentando fazer streaming de uma fonte (caixa de tv transmitindo em multicast nesta fonte rtp: // @ XXXX: Y) para a Internet (para meu celular como exemplo ou outro dispositivo dentro da minha LAN), mas eu não pode alcançá-lo. O comando que estou usando é algo parecido com isto

ffmpeg -i rtp://@X.X.X.X:Y -vcodec copy -f mpegts udp://127.0.0.1:1234

Mas isso não funciona como eu esperava, quero dizer, eu sou capaz de abrir o vlc e reproduzir o streaming na mesma máquina Estou rodando o ffmpeg mas não em outra máquina na mesma LAN. Alguém pode me ajudar?

Obrigado!

EDITAR: Finalmente resolvi instalar um software chamado "udpxy" que encaminha o conteúdo multicast para os clientes. Eu instalei em uma framboesa e funciona perfeito para esse fim.

Obrigado por todas as suas explicações. Isso me ajudou a entender o que eu quero fazer e as limitações que eu tenho usando um transcodificador. Eu acho que posso fazer o mesmo com o udpxy com o ffmpeg, mas posso publicar diretamente os IPs da caixa de TV.

    
por David 23.04.2018 / 17:53

2 respostas

0

Com o comando como indicado, 127.0.0.1 is localhost , o comando do computador em que este comando é executado. Então, é claro, você só conseguirá abrir o vlc e reproduzir o fluxo na mesma máquina.

Para encaminhar para outra máquina na mesma LAN, você precisará pelo menos do endereço IP desta máquina em sua LAN.

Você não pode transmitir "para a Internet", porque nem o computador em que este comando é executado nem o telefone celular terá um IP público fixo. Ambos estarão por trás do NAT (Network Address Translation) também. Então você não será capaz de fazer isso.

Se você está na LAN, o que impede você de usar o fluxo de multicast diretamente da "outra máquina" (afinal, é multicast, e é exatamente para isso que a multicast é feita ...)? Converter um bom fluxo de multicast RTP em pacotes UDP de endereço único propenso a erros não parece ser a solução ideal para mim ...

    
por 23.04.2018 / 18:11
0

Eu usarei este ponto de resposta para ajudar na resolução de problemas.

Caixa de TV (multicast) - > ffmpeg (multicast em fluxo de transporte MPEG) - > cliente VLC? (rx mpegts)

Suponha que:

O fluxo de vídeo não sai da LAN local.

O cliente que recebe o fluxo de transporte MPEG não pode ingressar ou receber um fluxo de multicast.

A caixa de TV não pode transmitir um fluxo de transporte MPEG.

Como @dirkt disse. "Converter um bom fluxo de multicast RTP em pacotes UDP de endereço único propenso a erros não parece ser a solução ideal para mim ..."

Mudaria o UDP para o TCP e mudaria de localhost para o endereço do cliente?

ffmpeg -i rtp://@X.X.X.X:Y -vcodec copy -f mpegts tcp://192.168.1.100:1234

tcp://192.168.1.100:1234 - O PC cliente recebendo o fluxo mpegts

rtp://@X.X.X.X:Y - O fluxo de transmissão (224.0.0.0 - 239.255.255.255) Transmitido pela caixa de TV.

O ideal seria trocar a transmissão da caixa de TV para mpegts, ou alterar a recepção do cliente de mpegts para transmitir a remoção da tradução ffmpeg intermediária.

Vocabulário:

mpegts - fluxo de transporte MPEG. Envolve um áudio, vídeo e outro em uma correção de erros e um padrão de sincronização ...

IP multicast - Um PC de origem e vários PCs de destino. Intervalo de endereços IPv4 de: 224.0.0.0 - 239.255.255.255. Parte disso é excluída para roteamento, gateway, etc. Um "cliente" se juntará a um "fluxo" de multicast. Um para muitos. mensagens podem ser perdidas ou entregues fora de ordem ...

    
por 23.04.2018 / 19:45