GStreamer的UDP流是缓慢的

问题描述 投票:8回答:3

我工作的一个视频聊天应用程序时遇到与UDP流VS 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端口= 5000”和tcpclientsink到“udpsink主机= nnn.nnn.nnn.nnnn端口= 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,都没有很好的效果。任何人都可以直接我说我完全没有得到(无疑是显而易见的)的事情吗?提前致谢 :)

streaming udp video-streaming gstreamer
3个回答
7
投票

我有同样的问题。尝试设置

sync=false

在tcpclientsink和xvimagesink


4
投票

我有一个类似的问题。我管理通过改变两件事情(1)由于伏羲在解码侧提到sync = false和(2)将盖以匹配编码流水线来解决它。对于如你的情况是这样gst-launch-0.10 tcpserversrc host=127.0.0.1 port=5000 ! decodebin ! video/x-raw-yuv,width=320,height=240 ! ffmpegcolorspace ! xvimagesink sync=false应该工作(这对我的作品)。我会建议您同时(服务器/客户端),帧频管道也是如此。我开始解码第一管道(服务器),然后将编码流水线(客户端)否则OFCOURSE失败。

更新:加入适当的译码元件之间的队列救了我的尾无数次。例如gst-launch-0.10 tcpserversrc host=127.0.0.1 port=5000 ! queue ! decodebin ! queue ! video/x-raw-yuv,width=320,height=240 ! ffmpegcolorspace ! xvimagesink sync=false。同样videorate帮助我在某些情况下。


0
投票

我使用这个命令和它的工作就像一个魅力。

服务器端:

gst-launch v4l2src device=/dev/video1 ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! udpsink host=127.0.0.1 port=5000

客户端:

gst-launch udpsrc uri=udp://127.0.0.1:5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d88007d0a041e1463000001b24c61766335322e3132332e30, payload=(int)96, ssrc=(uint)298758266, clock-base=(uint)3097828288, seqnum-base=(uint)63478" ! rtpmp4vdepay ! ffdec_mpeg4 ! autovideosink
© www.soinside.com 2019 - 2024. All rights reserved.