Retransmitir (encaminhar) UDP-Live-Video-Stream (usando Winsock) reduz a qualidade do vídeo?

Retransmitir (encaminhar) UDP-Live-Video-Stream (usando Winsock) reduz a qualidade do vídeo?

Então, usei o ffmpeg para transmitir a webcam ao vivo usando o protocolo UDP para a porta 1111:

ffmpeg -f dshow -i video="Lenovo EasyCamera" -f mpegts udp://localhost:1111

Quando joguei diretamente pelo ffplay da porta 1111, tudo funcionou corretamente:

ffplay udp://localhost:1111

Consegui a qualidade do vídeo assim:

insira a descrição da imagem aqui

Então eu acho que poderia escrever alguns códigos Winsock paraouça a porta 1111 e encaminhe qualquer pacote UDP capturado para a porta 2222. Assim, eu poderia simular que estou transmitindo para a porta 2222. Meu código é mais ou menos assim:

' // Please note that this is the simplified code - cause it worked
' // i've just post the key lines
Winsock1.Bind 1111
Winsock2.remotePort = 2222

WinSock1.GetData myPacket
Winsock2.SendData myPacket

Então tentei reproduzir o stream da porta 2222 usando ffplay:

ffplay udp://localhost:2222

Bem, não sei por que a qualidade do vídeo ficou tão ruim:

insira a descrição da imagem aqui

A questão é que enviei os mesmos pacotes UDP na mesma ordem que a fonte de streaming. Oque pode estar errado aqui?


PS: Eu tentei um experimento semelhante ao anterior com TCP, mas a qualidade do vídeo final foi tão boa quanto a transmissão direta. Então, isso poderia ser um problema do UDP?


PS2: Eu testei a perda e desordem de pacotes UDP substituindo o ffplay por um soquete que escuta a porta 2222 e imprime todos os pacotes recebidos. Mas o resultado é que todos os mais de 10.000 pacotes estavam na ordem correta e nada foi perdido. Que fenômeno maluco?

informação relacionada