Obtenha latência semelhante à do webrtc com ffmpeg?

9

Estou usando isso entre o Chrome e meu telefone:

link

E a latência é muito boa - menos de 1 segundo.

Estou tentando 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 depois usando o ffplay do outro lado.

Ainda tem alguns segundos de atraso.

Eventualmente gostaria de transmitir do meu computador para o telefone Android, mas a latência tem que ser boa.

Editar - isso funciona significativamente melhor. Se eu pudesse me livrar 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
    
por David N. Welton 27.11.2014 / 14:11

1 resposta

1

O problema é principalmente o fato de você estar usando transcodificação de software , em vez de transcodificação de hardware .

Como regra geral, se a conversão usar a aceleração de hardware, a latência será de menos de uma segunda ordem (geralmente milissegundos). Se isso for feito no software, a latência será de mais de uma segunda ordem.

O FFmpeg suporta aceleração de hardware, mas geralmente é complicado fazer com que funcione para você.

link

Por outro lado, o Google Chrome suporta codificação / decodificação de hardware do VP8 e do H264 (onde está disponível), tanto no seu computador como no seu telefone Android:

link

    
por 07.07.2015 / 13:07