Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Streaming gstreamer udp流速度较慢_Streaming_Udp_Video Streaming_Gstreamer - Fatal编程技术网

Streaming gstreamer udp流速度较慢

Streaming gstreamer udp流速度较慢,streaming,udp,video-streaming,gstreamer,Streaming,Udp,Video Streaming,Gstreamer,我正在开发一个视频聊天应用程序,在UDP流和TCP方面遇到了问题 当我使用下面的管道时,视频流是可以接受的。(应用程序本身使用python,但管道基本上如下所示) 但是,由于此应用程序要跨NAT执行,因此我需要UDP流。 当我将tcpserversrc切换到“udpsrc端口=5000”并将TCPClientink切换到“udpsink主机=nnn.nnn.nnn.nnnn端口=5000”时,性能会骤降到接收计算机每5秒左右获得一帧的程度。(即使两个流在同一台机器上执行,也会发生这种情况) 发送

我正在开发一个视频聊天应用程序,在UDP流和TCP方面遇到了问题

当我使用下面的管道时,视频流是可以接受的。(应用程序本身使用python,但管道基本上如下所示)

但是,由于此应用程序要跨NAT执行,因此我需要UDP流。 当我将tcpserversrc切换到“udpsrc端口=5000”并将TCPClientink切换到“udpsink主机=nnn.nnn.nnn.nnnn端口=5000”时,性能会骤降到接收计算机每5秒左右获得一帧的程度。(即使两个流在同一台机器上执行,也会发生这种情况)

发送管道生成以下内容(一次):

…接收管道生成(每20秒左右):

我读过文档和手册页,对udpsink的各种参数进行了修改,但都没有收到好的效果。 谁能告诉我一件我完全没有得到的东西(毫无疑问是显而易见的)? 提前谢谢:)

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

sync=false

在tcpclientink和xvimagesink上,我遇到了类似的问题。我设法解决了这个问题,改变了两件事,一是像伏羲提到的那样,在解码端添加大写字母以匹配编码管道。例如,在您的情况下,类似于
gst-launch-0.10 tcpserversrc host=127.0.0.1 port=5000!德克宾!视频/x-raw-yuv,宽度=320,高度=240!ffmpegcolorspace!xvimagesink sync=false
应该可以工作(它对我有效)。我建议您也在两个管道(服务器/客户端)中设置帧速率我首先启动解码管道(服务器),然后启动编码管道(客户端),否则当然会失败。

更新:
在适当的解码元素之间添加队列,多次节省了我的时间。e、 g.
gst-launch-0.10 tcpserversrc主机=127.0.0.1端口=5000!队列德克宾!队列视频/x-raw-yuv,宽度=320,高度=240!ffmpegcolorspace!xImageSink sync=false
。类似地,videorate在某些情况下对我有所帮助。

我正在使用这个命令,它工作起来很有魅力

服务器端:

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

它起作用了!非常感谢。顺便说一句,
sync=false
甚至可以做什么?使用
sync=false
可以禁用输出接收器的时钟同步。我也不知道我在说什么:)
sync=false
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