首页 > 代码库 > raspi # gstreamer - tcpclientsink 和 udpsrc 插件用法

raspi # gstreamer - tcpclientsink 和 udpsrc 插件用法

前提说明:

  在做gstreamer项目的时候某些时候需要主动发送设备中采集的数据到服务端,

这样就可以利用tcpclientsink和udpsink插件,主动发送数据到指定的服务器。

tcpclientsink 用法

说明:如果想主动往服务器发送数据,可以通过tcpclientsink插件进行传输

具体的代码如下

data-client:

发送到linux:

  raspivid -t 0 -w 800 -h 600 -fps 25 -g 5 -b 4000000 -vf -p 20,20,640,480 -o - | gst-launch-1.0 fdsrc ! h264parse ! gdppay ! tcpclientsink host=192.168.11.35 port=3000

发送到windows:

  raspivid -t 0 -w 800 -h 600 -fps 25 -g 5 -b 4000000 -vf -p 20,20,640,480 -o - | gst-launch-1.0 fdsrc ! h264parse ! rtph264pay config-interval=2 ! tcpclientsink host=192.168.11.35 port=3000

server:

linux:

  gst-launch-1.0 tcpserversrc host=192.168.11.35 port=3000 ! fdsink fd=2

windows:
  gst-launch-1.0 tcpserversrc host=192.168.11.35 port=3000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false
 

 rtsp server:(在gst-rtsp-server example项目中)

linux: 

  ./test-launch "( tcpserversrc host=192.168.11.35 port=3000 ! gdpdepay ! rtph264pay name=pay0 pt=96 )"

windows:

  ./test-launch "( tcpserversrc host=192.168.11.35 port=3000 ! application/x-rtp,payload=96 ! rtpjitterbuffer ! rtph264depay ! h264parse ! rtph264pay name=pay0 pt=96 )"

 这样就可以在手机或者客户端用rtsp软件进行实时视频传输了,

 

rtsp-server需要注意:

  因为rtsp服务器是需要数据的时候才接受来自tcpserversrc的数据,所以必须在手机或者客户端连接上rtsp的服务器端的时候,打开data-client才有效。

 打开顺序为 rtsp-server->rtsp-client->tcpclientsink

 

 udpsink 用法:

data-client:

 

发送到linux:

  raspivid -t 0 -w 800 -h 600 -fps 16 -g 5 -b 1000000 -vf -p 20,20,640,480 -n -o - | gst-launch-1.0 --gst-debug=3 fdsrc ! h264parse ! gdppay ! udpsink host=192.168.11.12 port=3000

发送到windows:

  raspivid -t 0 -w 800 -h 600 -fps 16 -g 5 -b 1000000 -vf -p 20,20,640,480 -n -o - | gst-launch-1.0 --gst-debug=3 fdsrc ! h264parse ! rtph264pay config-interval=2 ! udpsink host=192.168.11.36 port=3000

 

server:

linux:  

  gst-launch-1.0 udpsrc port=3000 ! fdsink fd=2
windows:

  gst
-launch-1.0 udpsrc port=3000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false

 

rtsp-server:

linux : 

  ./test-launch "( udpsrc port=3000 ! gdpdepay ! rtph264pay name=pay0 pt=96 )"
windows:

  .
/test-launch --gst-debug=3 "( udpsrc port=3000 ! application/x-rtp,payload=96 ! rtpjitterbuffer ! rtph264depay ! h264parse ! rtph264pay name=pay0 pt=96 )"

 

 

需要注意:

 在udp的模式下,无论有没有开启rtsp-server,在data-client端都将耗费流量进行数据的传输。

 

 

rtsp-server需要注意:

  在linux下,必须在手机或者客户端连接上rtsp的服务器端的时候,打开data-client才有效。

 打开顺序为 rtsp-server->rtsp-client->udpsink

   而windows下不会如此