GStreamer を使用した端末間での映像転送

2つの端末間で、映像の受け渡しを行たい場合に GStreamer では、udpsink と udpsrc または、tcpserversink と tcpclientsrc を使用します。

UDP を使用して JPEG を転送

サーバー

$ gst-launch-1.0 videotestsrc is-live=true \ 
    ! jpegenc \ 
    ! rtpjpegpay \ 
    ! udpsink host=192.168.2.10 port=7001

udpsink の host には、配信先の udpsrc を行なっている端末の IP アドレスを指定します。

クライアント

$ gst-launch-1.0 udpsrc port=7001 \ 
    ! application/x-rtp,encoding-name=JPEG \ 
    ! rtpjpegdepay \ 
    ! jpegdec \ 
    ! autovideosink 

TCP を使用して JPEG を転送

サーバー

$ gst-launch-1.0 videotestsrc is-live=true \ 
    ! jpegenc \ 
    ! rtpjpegpay \ 
    ! rtpstreampay \ 
    ! tcpserversink port=7001 

クライアント

$ gst-launch-1.0 tcpclientsrc host=192.168.2.10 port=7001 \ 
    ! application/x-rtp-stream,encoding-name=JPEG \ 
    ! rtpstreamdepay \ 
    ! rtpjpegdepay \
    ! jpegdec \ 
    ! autovideosink 

tcpclientsrc の host には、配信元の tcpserversink を行なっている端末の IP アドレスを指定します。

UDP を使用して H264 を転送

サーバー

$ gst-launch-1.0 videotestsrc is-live=true \
    ! x264enc \
    ! rtph264pay \
    ! udpsink host=192.168.2.10 port=7001

クライアント

$ gst-launch-1.0 udpsrc port=7001 caps="application/x-rtp,media=(string)video" \
    ! rtph264depay \
    ! avdec_h264 \
    ! videoconvert \
    ! autovideosink

x264enc を使用する場合にはライセンスがフリーではありませんので、ご注意ください。