前提说明:
在做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下不会如此
raspi # gstreamer - tcpclientsink 和 udpsrc 插件用法,布布扣,bubuko.com