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