zoukankan      html  css  js  c++  java
  • raspi # gstreamer

    前提说明:

      在做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下不会如此

  • 相关阅读:
    SDWebImage源码解读之SDWebImageDownloader
    Swift 中函数使用指南
    SDWebImage源码解读之SDWebImageDownloaderOperation
    Swift enum(枚举)使用范例
    用C语言封装OC对象(耐心阅读,非常重要)
    终端mysql Operation not permitted错误解决方案
    SDWebImage源码解读之SDWebImageCache(下)
    SDWebImage源码解读之SDWebImageCache(上)
    SDWebImage源码解读_之SDWebImageDecoder
    递归的本质
  • 原文地址:https://www.cnblogs.com/kkia/p/3816444.html
Copyright © 2011-2022 走看看