Eu tenho usado isso entre o Chrome e meu telefone:
E a latência é realmente boa - menos de 1 segundo.
Eu tenho tentado replicar isso no meu computador sem sucesso.
ffmpeg -f video4linux2 -i /dev/video0 -s 320x200 -r 50 -deadline realtime -vcodec libvpx -f webm -fflags nobuffer udp://10.0.0.55:9002
E então usando ffplay do outro lado.
Ainda tem alguns segundos de atraso.
Eventualmente, eu gostaria de transmitir do meu computador para o telefone Android, mas a latência precisa ser boa.
Editar - isso funciona significativamente melhor. Se eu pudesse me poupar um pouco disso, ficaria feliz:
ffmpeg -vcodec rawvideo -f video4linux2 -i /dev/video0 -s 320x200 -r 25 -vcodec libvpx -f rtp -deadline realtime rtp://10.0.0.55:9002
ffmpeg
video-streaming
David N. Welton
fonte
fonte
Respostas:
O problema é principalmente do fato de você estar usando a transcodificação de software , em vez da transcodificação de hardware .
Como regra geral, se a conversão usar a aceleração de hardware, a latência será da ordem de menos de um segundo (geralmente milissegundos). Se isso for feito em software, a latência será da ordem de mais de um segundo.
O FFmpeg suporta aceleração de hardware, mas geralmente é complicado fazê-lo funcionar para você.
https://trac.ffmpeg.org/wiki/HWAccelIntro
Por outro lado, o Google Chrome suporta codificação / decodificação de hardware VP8 e H264 (quando disponível), tanto no seu computador quanto no seu telefone Android:
http://code.google.com/p/chromium/issues/detail?id=428223
fonte