Pipe / imagem direta / saída de vídeo para o servidor externo

3

Estou trabalhando em um projeto que envolve pegar a saída de uma webcam em formato jpg ou h.264 e enviá-la para um servidor externo (o HTTP / FTP funcionaria, estou de mente aberta). Qual é a maneira mais lógica de fazer isso?

Eu imagino que isso seria alcançado com (command) | (commandtooutput [params]) [location] . Eu estou olhando para isso errado?

Com as imagens, prefiro enviá-las periodicamente, como uma vez por minuto. Eventualmente eu gostaria de permitir que este período seja alterado. Isso parece lógico / realista? Presumo que a maneira mais lógica de implementar isso seria com scripts em Python ou BASH, fazendo com que o script leia as informações do período antes de cada sincronização e, em seguida, faça com que o script seja ajustado de acordo.

Para dar um background a saída é de um programa raspistill ou raspivid do Raspberry Pi, (ele estará rodando o ArchARM ou o Raspbian usual). Decidi não colocar essa questão nesses fóruns porque acho que aplica mais qualquer distribuição do Linux. Acredito que a única coisa que é única para o Pi nesta situação é irrelevante para a minha pergunta, no entanto, se este é um lugar inadequado para perguntar, deixe-me saber e eu não se esqueça de mover / excluir o post.

    
por aBitPastOne 20.02.2014 / 18:52

2 respostas

1

No seu caso, eu desacoplaria a geração das imagens e o upload. Você pode fazer isso escrevendo as imagens em um diretório e regularmente (daemon, cron job) carregar as imagens. Dessa forma, você é mais robusto no caso de a conexão com o servidor ficar inativa por um curto período (ou o servidor está reinicializando por algum motivo).

O upload pode ser feito usando rsync ou rdiff-backup , se você quiser manter os originais no lado da fonte. Ambos funcionam bem acima de ssh , para o qual você precisaria de uma chave privada / pública (sem senha) e copiaria a chave pública para o servidor.

Se você não quiser manter nada no cliente, provavelmente terá apenas um script pequeno que carregue os arquivos usando scp (novamente usando ssh abaixo) e removendo os arquivos depois de copiados.

Fazer o upload usando HTTP e automatizar o FTP é, na minha experiência, um pouco mais complicado, especialmente se você já tiver ssh em execução no servidor. Para chamar scp ou rsync ou fazer o upload usando HTTP, você não precisa do Python. Se você precisar usar o FTP, convém usar o ftplib

    
por 20.02.2014 / 20:08
1

Eu daria uma olhada no aplicativo movimento . Aqui estão dois vídeos no youtube que mostram que está sendo configurado e configurado.

O Motion tem recursos para retransmitir imagens para um servidor remoto. Você pode usar wput para enviar imagens para um servidor FTP, por exemplo.

on_picture_save wput −−binary −−remove−source−files \
  ftp://[email protected]:[email protected] %f

Ou você pode usar scp :

on_picture_save scp -P2222 %f [email protected]:/path/to/motion/files/backup/
    
por 20.02.2014 / 20:25