Повторная трансляция (пересылка) UDP-Live-Video-Stream (с использованием winsock) снижает качество видео?

Повторная трансляция (пересылка) UDP-Live-Video-Stream (с использованием winsock) снижает качество видео?

Итак, я использовал ffmpeg для потоковой передачи видео с веб-камеры по протоколу UDP на порт 1111:

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

Когда я запустил его напрямую через ffplay с порта 1111, все работало правильно:

ffplay udp://localhost:1111

Я получил видео такого качества:

введите описание изображения здесь

Поэтому я думаю, что я мог бы написать несколько кодов WinSock дляпрослушивать порт 1111 и пересылать все перехваченные им пакеты UDP на порт 2222. Таким образом, я мог бы смоделировать потоковую передачу на порт 2222. Мой код выглядит примерно так:

' // 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

Затем я попробовал воспроизвести поток с порта 2222 с помощью ffplay:

ffplay udp://localhost:2222

Ну, я не знаю, почему качество видео стало таким плохим:

введите описание изображения здесь

Дело в том, что я отправил те же UDP-пакеты в том же порядке, что и streaming-source. Что тут может быть не так?


PS: Я пробовал провести аналогичный эксперимент с TCP, но качество видео в итоге было таким же хорошим, как и при прямой потоковой передаче. Так может ли это быть проблемой UDP?


PS2: Я протестировал потерю и беспорядок пакетов UDP, заменив ffplay на сокет, который слушает порт 2222 и выводит все полученные пакеты. Но в результате все 10 000+ пакетов были в правильном порядке и ничего не потерялось. Что за безумное явление?

Связанный контент