Como transmitir vídeo com o netcat

1

Eu gostaria de ter o stream de vídeo do Raspberry Pi, então estou fazendo isso:

raspivid ... -o - | nc -l -k 4242

Mas o problema é que o canal ou nc está armazenando os dados em cache até que alguém se conecte. Mas eu não quero fazer isso. Quero descartar todos os dados até que alguém se conecte.

    
por Pitel 02.11.2017 / 10:41

1 resposta

1

Você configurou um soquete TCP de escuta, que requer que um cliente se conecte antes que os dados possam fluir. Mas mesmo se você configurar um soquete UDP, provavelmente terminará tendo o cliente conectado midstream sem nenhum dos metadados que definem como o fluxo deve ser interpretado.

Se você tiver um protocolo que forneça metadados de forma freqüente e regular, poderá tentar um soquete UDP. Minha versão de nc não tem a opção -k , mas estou ciente de que há (pelo menos) duas versões diferentes disponíveis, por isso não posso fornecer um exemplo de linha de comando testado.

Se você quiser transmitir um vídeo, use um software desenvolvido especificamente para isso. É uma área de tecnologia complexa (uma área jurídica complexa, também, já que existem muitas patentes) e, a menos que você esteja transmitindo algo simples como o MJPEG, é improvável que você tenha qualquer sucesso com uma solução ingênua, como netcat . / p>

Alguns exemplos de aplicativos de software podem ser encontrados em sites como Videolan , Icecast , Opencast ou Red5 .

Na verdade, lendo algumas documentação para raspivid , parece que você pode usar um ouvinte como o oferecido por xinetd ou systemd para manipular a conexão de entrada e, em seguida, inicie raspivid depois que a conexão TCP for estabelecida. Você ainda não obtém nenhum controle de fluxo ou gerenciamento de largura de banda em tempo real, mas em uma rede controlada você pode atingir sua meta satisfatoriamente.

    
por 02.11.2017 / 11:01