gstreamer udp Стриминг идет медленно

Я работаю над приложением для видеочата, и у меня проблемы с потоковой передачей UDP по сравнению с TCP.

Когда я использую конвейеры, указанные ниже, видеопотоки передаются приемлемо. ( Само приложение написано на python, но конвейеры в основном такие, как показано ниже)

sender: 

gst-launch-0.10 v4l2src ! video/x-raw-yuv,width=320,height=240 ! 
    theoraenc ! oggmux ! tcpclientsink host=nnn.nnn.nnn.nnn port = 5000

receiver: 

gst-launch-0.10 tcpserversrc host=nnn.nnn.nnn.nnn port=5000 
    ! decodebin ! xvimagesink

Однако, поскольку это приложение должно работать через / через NAT, мне требуется потоковая передача UDP. Когда я переключаю tcpserversrc на «udpsrc port = 5000», а tcpclientsink на «udpsink host = nnn.nnn.nnn.nnnn port = 5000», производительность падает до точки, когда принимающий компьютер получает один кадр каждые 5 секунд. или так. (Это происходит, даже если оба потока выполняются на одной машине)

Передающий конвейер генерирует следующее (один раз):

WARNING: from element /GstPipeline:pipeline0/GstUDPSink:udpsink0: 
    Internal data flow problem.
    Additional debug info:
    gstbasesink.c(3492): gst_base_sink_chain_unlocked (): /GstPipeline:pipeline0
    /GstUDPSink:udpsink0:
    Received buffer without a new-segment. Assuming timestamps start from 0.

... а принимающий конвейер генерирует (каждые 20 секунд или около того):

WARNING: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: 
    A lot of buffers are being dropped.
    Additional debug info:
    gstbasesink.c(2739): gst_base_sink_is_too_late (): /GstPipeline:pipeline0
    /GstXvImageSink:xvimagesink0:
    There may be a timestamping problem, or this computer is too slow.

I ' Я читал документы и страницы руководства, возился с различными параметрами udpsink, но все безрезультатно. Может ли кто-нибудь направить меня к (без сомнения очевидной) вещи, которую я совершенно не понимаю? Заранее благодарим :)

8
задан sonicwave 4 February 2019 в 16:53
поделиться