Видео FFmpeg сильно искажено после идеального начала - PullRequest
0 голосов
/ 11 апреля 2020

Я использую следующую команду FFMpeg для преобразования потокового видео H.264 UDP с дрона Tello в другой адрес.

ffmpeg -i udp://0.0.0.0:11111 -preset ultrafast -vcodec libx264 -tune zerolatency -b 900k -f h264 udp://127.0.0.1:5000

Затем я просто использую следующий OpenCv для чтения с этого нового адреса:

this.Capture = new OpenCvSharp.VideoCapture("udp://127.0.0.1:5000", OpenCvSharp.VideoCaptureAPIs.FFMPEG);

Из этой ссылки Capture я получаю следующий кадр, вызывая this.Capture.Read (mat). Когда я назначил конвертируемое изображение для пользовательского интерфейса, оно идеально подходит для пикселей!

Однако после первоначального рендеринга я не вижу немедленных обновлений. Но я вижу очень медленные обновления видео, которые очень искажены. Похоже, что каждый последовательный кадр - это просто разность / разница, нарисованная поверх предыдущего кадра.

Есть ли что-нибудь, что я могу настроить / изменить в моей команде FFMpeg, чтобы разрешить этот искаженный рендеринг видео ?

Обновление 1 Мне удалось добиться определенного прогресса. Видео обновляется, все еще с искажениями, но общее искажение немного меньше. И кадры обновляются быстрее.

Чтобы добраться до этой точки, я просто добавил этот параметр в свою команду FFMpeg:

-g 100

Я также попытался:

-g 300
...