GStreamer : Pipeline to connect VNC server and Display/Record the remote GUI



  • Hi,
    I want to use GStreamer to connect to a VNC server and record the video.
    for now all i did is : I likned my app against GStreamer

    Please someone explain or provide an introduction (simple) tutorial to help me to understand the concept of pipeline.
    i need to use gst-launch-1.0 tool to create the pipeline and GstParse to generate and execute the pipeline in my code.

    Thank you in advance


  • Lifetime Qt Champion

    Copies from this thread:

    A GStreamer pipeline is basically a list of module that you chain to each other from the source to the sink to, for example, read an audio file, decode it and finally send it to your audio output.

    From a command line point of view, it's the elements built from the parameters you give to gst-launch.

    For example:
    Play the mp3 music file "music.mp3" using a libmad-based plugin and output to an OSS device:

    gst-launch-1.0 filesrc location=music.mp3 ! mad ! audioconvert ! audioresample ! osssink
    

    The documentation of get-launch gives you more good examples.
    The API tutorials are pretty nice to get started.



  • @SGaist said in GStreamer : understanding the concept of 'pipeline':

    Copies from this thread:

    Yes, thx, i did a new one because the other thread is turning to spaghetti.
    Thx for explanation, it is bit clearer
    I will dive into these docs today.



  • Hi,
    I'm testing the GStreamer Hello World exemple, a call to GstMessage * gst_bus_timed_pop_filtered() is underlined in red, and application cant compile
    Qt creator autocompletion can find it, but when i call it

    msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS)
    

    output : no matching function for call to 'gst_bus_timed_pop_filtered'

    What could be the problem please ?


  • Qt Champions 2018

    @LeLev Header file not included?
    Wrong parameters passed?



  • @jsulm hi
    i only include <gst/gst.h>

    about parameters, i also tryed to compile the program without passing any parameters to gst_bus_timed_pop_filtered
    and had this output :
    too few arguments to function 'GstMessage* gst_bus_timed_pop_filtered(GstBus*, GstClockTime, GstMessageType)'
    msg = gst_bus_timed_pop_filtered();
    ^


  • Qt Champions 2018

    @LeLev said in GStreamer : understanding the concept of 'pipeline':

    without passing any parameters

    this will for sure not work as the function expects 3 parameters: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html#gst-bus-timed-pop-filtered

    Can you post the whole error message with the parameters you were passing before?
    Maybe the type of "bus" was wrong?



  • @jsulm

         gst_init (&argc, &argv);
         GstElement *pipeline;
         GstBus *bus;
         GstMessage *msg;
    
         pipeline = gst_parse_launch ("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm", NULL);
    
           gst_element_set_state (pipeline, GST_STATE_PLAYING);
           
           bus = gst_element_get_bus (pipeline);
           msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
    

    output :

    no matching function for call to 'gst_bus_timed_pop_filtered'
    
    erreur : invalid conversion from 'int' to 'GstMessageType' [-fpermissive]
            msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
                                                                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
    

  • Qt Champions 2018

    @LeLev said in GStreamer : understanding the concept of 'pipeline':

    GST_MESSAGE_ERROR | GST_MESSAGE_EOS

    this is the actual problem. Try to cast it to GstMessageType:

    msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, static_cast<GstMessageType>(GST_MESSAGE_ERROR | GST_MESSAGE_EOS));
    


  • i just changed the 3rd parameter and it compiled

    msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_EOS);
    


  • @jsulm said in GStreamer : understanding the concept of 'pipeline':

    ry to cast it to GstMessageType:

    Thank you !


  • Qt Champions 2018

    @LeLev That's why it is important to post all errors: many errors are just follow up errors caused by another error.



  • @jsulm said in GStreamer : understanding the concept of 'pipeline':

    all errors

    saved for the next time.

    I'm confused about this lib.
    In this hello world exemple they say :

    If everything built fine, fire up the executable! You should see a window pop up, containing a video being played straight from the Internet, along with audio. Congratulations!

    I can't figure out how a window will pop up.
    I'm reading the playbin description right now, in my app nothing pops up.


  • Qt Champions 2018

    @LeLev said in GStreamer : understanding the concept of 'pipeline':

    I can't figure out how a window will pop up.

    So, you start the app but no window pops up?
    Then probably something is wrong. I don't know what. You can debug and see what happens.



  • @jsulm said in GStreamer : understanding the concept of 'pipeline':

    So, you start the app but no window pops up?

    Yes,

    @jsulm said in GStreamer : understanding the concept of 'pipeline':

    probably something is wrong

    yes, with putenv("GST_DEBUG=2"); i got :

    0:00:03.253981299  1536 0000000037E010C0 WARN             souphttpsrc gstsouphttpsrc.c:1379:gst_soup_http_src_parse_status:<source> error: Secure connection setup failed.
    0:00:03.254006642  1536 0000000037E010C0 WARN             souphttpsrc gstsouphttpsrc.c:1379:gst_soup_http_src_parse_status:<source> error: TLS/SSL support not available; install glib-networking (6), URL: https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm, Redirect to: (NULL)
    0:00:03.254067912  1536 0000000037E010C0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<source> error: Internal data stream error.
    0:00:03.254105765  1536 0000000037E010C0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<source> error: streaming stopped, reason error (-5)
    0:00:03.254180509  1536 0000000037E010C0 WARN                typefind gsttypefindelement.c:991:gst_type_find_element_chain_do_typefinding:<typefindelement0> error: Stream doesn't contain enough data.
    0:00:03.254192057  1536 0000000037E010C0 WARN                typefind gsttypefindelement.c:991:gst_type_find_element_chain_do_typefinding:<typefindelement0> error: Can't typefind stream
    

    i will install glib-networking


  • Qt Champions 2018

    @LeLev You could try to play a video from a non-SSL (non-HTTPS) URL.



  • @jsulm That worked thank you!



  • Can please someone help me to complete this pipeline so it can record the VNC remote desktop to video file and/or show it with
    playbin ?
    pipeline = gst_parse_launch("rfbsrc host=xx.xx.xx.xx port=5900 password=passw view-only=true",NULL);


  • Lifetime Qt Champion

    Use the tee plugin.



  • @SGaist thank you, I tryed to use tee, but that is more complicated to do, i actually don't want to Watch and Save/record.
    I would like to only save the video without displaying it.

    after some houres i got this broken pipeline..

    I have lot of troubles on how to set up the format for the video and write it to a file
    I use ultraVnc server

    "rfbsrc host=xx.xx.xx.xx port=5900 password=pw view-only=true   TODO : set up video format    ! mpegtsmux ! filesink location=testvideo.mp4"
    

    i have this output

    ** (QVNCClient.exe:10252): CRITICAL **: gst_video_info_set_format: assertion 'format != GST_VIDEO_FORMAT_UNKNOWN' failed
    
    ** (QVNCClient.exe:10252): CRITICAL **: gst_video_info_to_caps: assertion 'info->finfo->format != GST_VIDEO_FORMAT_UNKNOWN' failed
    
    (QVNCClient.exe:10252): GStreamer-CRITICAL **: gst_event_new_caps: assertion 'caps != NULL' failed
    
    (QVNCClient.exe:10252): GStreamer-CRITICAL **: gst_pad_push_event: assertion 'GST_IS_EVENT (event)' failed
    
    (QVNCClient.exe:10252): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed
    0:00:00.737522311 10252 0000000036FDDBC0 WARN                 basesrc gstbasesrc.c:3275:gst_base_src_prepare_allocation:<rfbsrc0> Subclass failed to decide allocation
    0:00:00.737604753 10252 0000000036FDDBC0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<rfbsrc0> error: Internal data stream error.
    0:00:00.737644531 10252 0000000036FDDBC0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<rfbsrc0> error: streaming stopped, reason not-negotiated (-4)
    This program is linked against GStreamer 1.14.3 
    

    THX


  • Lifetime Qt Champion

    You have here an example of pipeline with h264 recording.



  • @SGaist hi,
    I am still struggling with Gstreamer.

    Could you please try to see where the probleme is ?
    i try this pipeline :

    gst-launch-1.0 -v rfbsrc host=xx.xx.x.xx port=5900 password=passw view-only=true !
    tee name = t ! queue ! omxh264enc ! 
    'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux ! 
    filesink location=test.mp4 t. ! queue ! videoscale ! video/x-raw, 
    width=480,height=270 ! xvimagesink -e sync=false
    

    OUTPUT :
    *(gst-launch-1.0:8672): GStreamer-CRITICAL *: gst_element_make_from_uri: assertion 'gst_uri_is_valid (uri)' failed
    WARNING: erroneous pipeline: no element "omxh264enc"

    I downloaded and installed x264 from here but i still get same error

    Maybe there is a simple way to just connect to VNC srv and only record without displaying.
    Or a simple tool that i can start with QProcess



  • i tryed like this also :

    gst-launch-1.0 rfbsrc host=xx.x.x.xx port=xxxx password=xxxx view-only=true ! videoconvert ! x264enc ! flvmux ! filesink location=xyz.flv
    

    OUTPUT : WARNING : erroneous pipeline : no element "x264enc"

    I found "x264enc" is part of gst-plugins-ugly but cant fugure out how to install tath missing plugin. I downloaded it from here

    I also found a tool : vnc2flv
    i need to build it with python but when i try i get :

    error print version
    Missing parentheses in call to 'print'. Did you mean print(version)


  • Qt Champions 2018

    @LeLev said in GStreamer : understanding the concept of 'pipeline':

    gst-plugins-ugly but cant fugure out how to install tath missing plugin

    apt install gstreamer1.0-plugins-ugly
    


  • @jsulm hi ,
    I did not mension I'm using windows.


  • Lifetime Qt Champion

    @LeLev said in GStreamer : understanding the concept of 'pipeline':

    error print version
    Missing parentheses in call to 'print'. Did you mean print(version)

    Because the code is written for Python 2 and you are using Python 3

    What set of plugins did you get when installing on Windows ?



  • hi @SGaist thank you,
    please see my output for gst-inspect-1.0

    C:\Users\lev>gst-inspect-1.0
    gio:  giosink: GIO sink
    gio:  giosrc: GIO source
    gio:  giostreamsink: GIO stream sink
    gio:  giostreamsrc: GIO stream source
    taglib:  id3v2mux: TagLib-based ID3v2 Muxer
    taglib:  apev2mux: TagLib-based APEv2 Muxer
    soundtouch:  pitch: Pitch controller
    soundtouch:  bpmdetect: BPM Detector
    openh264:  openh264dec: OpenH264 video decoder
    openh264:  openh264enc: OpenH264 video encoder
    decklink:  decklinkaudiosink: Decklink Audio Sink
    decklink:  decklinkvideosink: Decklink Video Sink
    decklink:  decklinkaudiosrc: Decklink Audio Source
    decklink:  decklinkvideosrc: Decklink Video Source
    y4menc:  y4menc: YUV4MPEG video encoder
    y4mdec:  y4mdec: YUV4MPEG demuxer/decoder
    webrtc:  webrtcbin: WebRTC Bin
    wavparse:  wavparse: WAV audio demuxer
    wavpack:  wavpackenc: Wavpack audio encoder
    wavpack:  wavpackdec: Wavpack audio decoder
    wavenc:  wavenc: WAV audio muxer
    wasapi:  wasapideviceprovider (GstDeviceProviderFactory)
    wasapi:  wasapisrc: WasapiSrc
    wasapi:  wasapisink: WasapiSrc
    vpx:  vp9enc: On2 VP9 Encoder
    vpx:  vp9dec: On2 VP9 Decoder
    vpx:  vp8enc: On2 VP8 Encoder
    vpx:  vp8dec: On2 VP8 Decoder
    vorbis:  vorbistag: VorbisTag
    vorbis:  vorbisparse: VorbisParse
    vorbis:  vorbisdec: Vorbis audio decoder
    vorbis:  vorbisenc: Vorbis audio encoder
    volume:  volume: Volume
    videotestsrc:  videotestsrc: Video test source
    videoscale:  videoscale: Video scaler
    videorate:  videorate: Video rate adjuster
    videoparsersbad:  vc1parse: VC1 parser
    videoparsersbad:  h265parse: H.265 parser
    videoparsersbad:  jpeg2000parse: JPEG 2000 parser
    videoparsersbad:  pngparse: PNG parser
    videoparsersbad:  mpeg4videoparse: MPEG 4 video elementary stream parser
    videoparsersbad:  mpegvideoparse: MPEG video elementary stream parser
    videoparsersbad:  diracparse: Dirac parser
    videoparsersbad:  h264parse: H.264 parser
    videoparsersbad:  h263parse: H.263 parser
    videomixer:  videomixer: Video mixer 2
    videofiltersbad:  videodiff: Video Diff
    videofiltersbad:  zebrastripe: Zebra stripe overlay
    videofiltersbad:  scenechange: Scene change detector
    videofilter:  videomedian: Median effect
    videofilter:  videoflip: Video flipper
    videofilter:  videobalance: Video balance
    videofilter:  gamma: Video gamma correction
    videocrop:  aspectratiocrop: aspectratiocrop
    videocrop:  videocrop: Crop
    videoconvert:  videoconvert: Colorspace converter
    videobox:  videobox: Video box filter
    udp:  udpsrc: UDP packet receiver
    udp:  dynudpsink: UDP packet sender
    udp:  multiudpsink: UDP packet sender
    udp:  udpsink: UDP packet sender
    typefindfunctions: audio/audible: aa, aax
    typefindfunctions: audio/x-xi: xi
    typefindfunctions: video/x-pva: pva
    typefindfunctions: application/x-ssa: ssa, ass
    typefindfunctions: application/octet-stream: no extensions
    typefindfunctions: image/x-degas: no extensions
    typefindfunctions: image/x-icon: no extensions
    typefindfunctions: application/x-yuv4mpeg: no extensions
    typefindfunctions: image/vnd.wap.wbmp: no extensions
    typefindfunctions: image/vnd.adobe.photoshop: psd
    typefindfunctions: application/msword: doc
    typefindfunctions: application/pdf: pdf
    typefindfunctions: audio/x-kss: kss
    typefindfunctions: video/x-ivf: ivf
    typefindfunctions: audio/x-sap: sap
    typefindfunctions: audio/x-vgm: vgm
    typefindfunctions: audio/x-gbs: gbs
    typefindfunctions: audio/x-ay: ay
    typefindfunctions: audio/x-gym: gym
    typefindfunctions: audio/x-nsf: nsf
    typefindfunctions: video/vivo: viv
    typefindfunctions: application/x-mmsh: no extensions
    typefindfunctions: multipart/x-mixed-replace: no extensions
    typefindfunctions: video/x-dirac: no extensions
    typefindfunctions: application/x-ms-dos-executable: dll, exe, ocx, sys, scr, msstyles, cpl
    typefindfunctions: application/x-ar: a
    typefindfunctions: application/x-tar: tar
    typefindfunctions: application/x-rar: rar
    typefindfunctions: image/svg+xml: svg
    typefindfunctions: application/postscript: ps
    typefindfunctions: audio/x-caf: caf
    typefindfunctions: audio/x-wavpack-correction: wvc
    typefindfunctions: audio/x-wavpack: wv, wvp
    typefindfunctions: audio/x-spc: spc
    typefindfunctions: audio/aac: aac, adts, adif, loas
    typefindfunctions: application/x-executable: no extensions
    typefindfunctions: text/x-cmml: no extensions
    typefindfunctions: application/x-ogg-skeleton: no extensions
    typefindfunctions: audio/x-celt: no extensions
    typefindfunctions: audio/x-speex: no extensions
    typefindfunctions: application/x-ogm-text: no extensions
    typefindfunctions: application/x-ogm-audio: no extensions
    typefindfunctions: application/x-ogm-video: no extensions
    typefindfunctions: video/x-theora: no extensions
    typefindfunctions: audio/x-vorbis: no extensions
    typefindfunctions: audio/x-flac: flac
    typefindfunctions: application/x-subtitle-vtt: vtt
    typefindfunctions: subtitle/x-kate: no extensions
    typefindfunctions: application/x-compress: Z
    typefindfunctions: application/zip: zip
    typefindfunctions: application/x-gzip: gz
    typefindfunctions: application/x-bzip: bz2
    typefindfunctions: image/x-sun-raster: ras
    typefindfunctions: image/x-xpixmap: xpm
    typefindfunctions: image/x-jng: jng
    typefindfunctions: video/x-mng: mng
    typefindfunctions: image/x-xcf: xcf
    typefindfunctions: audio/x-sid: sid
    typefindfunctions: audio/x-sbc: sbc
    typefindfunctions: audio/iLBC-sh: ilbc
    typefindfunctions: audio/x-amr-wb-sh: amr
    typefindfunctions: audio/x-amr-nb-sh: amr
    typefindfunctions: video/x-dv: dv, dif
    typefindfunctions: video/x-mve: mve
    typefindfunctions: application/mxf: mxf
    typefindfunctions: video/x-matroska: mkv, mka, mk3d, webm
    typefindfunctions: image/x-portable-pixmap: pnm, ppm, pgm, pbm
    typefindfunctions: image/x-exr: exr
    typefindfunctions: image/webp: webp
    typefindfunctions: image/tiff: tif, tiff
    typefindfunctions: image/bmp: bmp
    typefindfunctions: image/png: png
    typefindfunctions: image/gif: gif
    typefindfunctions: image/jpeg: jpg, jpe, jpeg
    typefindfunctions: application/x-ape: ape
    typefindfunctions: audio/x-shorten: shn
    typefindfunctions: audio/x-rf64: rf64
    typefindfunctions: audio/x-w64: w64
    typefindfunctions: audio/x-ircam: sf
    typefindfunctions: audio/x-sds: sds
    typefindfunctions: audio/x-voc: voc
    typefindfunctions: audio/x-nist: nist
    typefindfunctions: audio/x-paris: paf
    typefindfunctions: audio/x-svx: iff, svx
    typefindfunctions: audio/x-aiff: aiff, aif, aifc
    typefindfunctions: audio/x-wav: wav
    typefindfunctions: application/xml: xml
    typefindfunctions: application/ttml+xml: ttml+xml
    typefindfunctions: application/smil: smil
    typefindfunctions: application/sdp: sdp
    typefindfunctions: application/x-hls: m3u8
    typefindfunctions: application/itc: itc
    typefindfunctions: text/uri-list: ram
    typefindfunctions: text/utf-32: txt
    typefindfunctions: text/utf-16: txt
    typefindfunctions: text/plain: txt
    typefindfunctions: video/x-flv: flv
    typefindfunctions: application/vnd.ms-sstr+xml: no extensions
    typefindfunctions: application/dash+xml: mpd, MPD
    typefindfunctions: application/x-shockwave-flash: swf, swfl
    typefindfunctions: application/x-pn-realaudio: ra, ram, rm, rmvb
    typefindfunctions: application/vnd.rn-realmedia: ra, ram, rm, rmvb
    typefindfunctions: text/html: htm, html
    typefindfunctions: video/mj2: mj2
    typefindfunctions: image/x-jpc: jpc, j2k
    typefindfunctions: image/jp2: jp2
    typefindfunctions: image/x-quicktime: qif, qtif, qti
    typefindfunctions: video/quicktime: mov, mp4
    typefindfunctions: application/x-3gp: 3gp
    typefindfunctions: audio/x-m4a: m4a
    typefindfunctions: video/x-nuv: nuv
    typefindfunctions: video/x-h265: h265, x265, 265
    typefindfunctions: video/x-h264: h264, x264, 264
    typefindfunctions: video/x-h263: h263, 263
    typefindfunctions: video/mpeg4: m4v
    typefindfunctions: video/mpeg-elementary: mpv, mpeg, mpg
    typefindfunctions: application/ogg: ogg, oga, ogv, ogm, ogx, spx, anx, axa, axv
    typefindfunctions: video/mpegts: ts, mts
    typefindfunctions: video/mpeg-sys: mpe, mpeg, mpg
    typefindfunctions: audio/x-gsm: gsm
    typefindfunctions: audio/x-dts: dts
    typefindfunctions: audio/x-ac3: ac3, eac3
    typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga
    typefindfunctions: audio/x-mod: 669, amf, ams, dbm, digi, dmf, dsm, gdm, far, imf, it, j2b, mdl, med, mod, mt2, mtm, okt, psm, ptm, sam, s3m, stm, st
    , ult, umx, xm
    typefindfunctions: audio/x-ttafile: tta
    typefindfunctions: application/x-apetag: mp3, ape, mpc, wv
    typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta
    typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta
    typefindfunctions: video/x-fli: flc, fli
    typefindfunctions: audio/mobile-xmf: mxmf
    typefindfunctions: audio/riff-midi: mid, midi
    typefindfunctions: audio/midi: mid, midi
    typefindfunctions: audio/x-imelody: imy, ime, imelody
    typefindfunctions: video/x-vcd: dat
    typefindfunctions: video/x-cdxa: dat
    typefindfunctions: audio/qcelp: qcp
    typefindfunctions: video/x-msvideo: avi
    typefindfunctions: audio/x-au: au, snd
    typefindfunctions: audio/x-musepack: mpc, mpp, mp+
    typefindfunctions: video/x-ms-asf: asf, wm, wma, wmv
    theora:  theoraparse: Theora video parser
    theora:  theoraenc: Theora video encoder
    theora:  theoradec: Theora video decoder
    tcp:  multisocketsink: Multi socket sink
    tcp:  tcpserversrc: TCP server source
    tcp:  tcpserversink: TCP server sink
    tcp:  tcpclientsrc: TCP client source
    tcp:  tcpclientsink: TCP client sink
    tcp:  socketsrc: socket source
    subparse:  ssaparse: SSA Subtitle Parser
    subparse:  subparse: Subtitle parser
    subparse: subparse_typefind: srt, sub, mpsub, mdvd, smi, txt, dks, vtt
    srtp:  srtpdec: SRTP decoder
    srtp:  srtpenc: SRTP encoder
    speex:  speexdec: Speex audio decoder
    speex:  speexenc: Speex audio encoder
    speed:  speed: Speed
    spectrum:  spectrum: Spectrum analyzer
    spandsp:  tonegeneratesrc: Telephony Tone  Generator source
    spandsp:  dtmfdetect: DTMF detector element
    spandsp:  spanplc: SpanDSP PLC
    soup:  souphttpclientsink: HTTP client sink
    soup:  souphttpsrc: HTTP client source
    smpte:  smptealpha: SMPTE transitions
    smpte:  smpte: SMPTE transitions
    smoothstreaming:  mssdemux: Smooth Streaming demuxer
    smooth:  smooth: Smooth effect
    siren:  sirenenc: Siren Encoder element
    siren:  sirendec: Siren Decoder element
    shapewipe:  shapewipe: Shape Wipe transition filter
    segmentclip:  videosegmentclip: Video buffer segment clipper
    segmentclip:  audiosegmentclip: Audio buffer segment clipper
    sdpelem:  sdpsrc: SDP Source
    sdpelem:  sdpdemux: SDP session setup
    sbc:  sbcenc: Bluetooth SBC audio encoder
    sbc:  sbcdec: Bluetooth SBC audio decoder
    rtspclientsink:  rtspclientsink: RTSP RECORD client
    rtsp:  rtpdec: RTP Decoder
    rtsp:  rtspsrc: RTSP packet receiver
    rtpmanager:  rtpdtmfmux: RTP muxer
    rtpmanager:  rtpmux: RTP muxer
    rtpmanager:  rtpssrcdemux: RTP SSRC Demux
    rtpmanager:  rtprtxsend: RTP Retransmission Sender
    rtpmanager:  rtprtxreceive: RTP Retransmission receiver
    rtpmanager:  rtprtxqueue: RTP Retransmission Queue
    rtpmanager:  rtpsession: RTP Session
    rtpmanager:  rtpptdemux: RTP Demux
    rtpmanager:  rtpjitterbuffer: RTP packet jitter-buffer
    rtpmanager:  rtpbin: RTP Bin
    rtp:  rtpstorage: RTP storage
    rtp:  rtpulpfecenc: RTP FEC Encoder
    rtp:  rtpulpfecdec: RTP FEC Decoder
    rtp:  rtpreddec: Redundant Audio Data (RED) Decoder
    rtp:  rtpredenc: Redundant Audio Data (RED) Encoder
    rtp:  rtpstreamdepay: RTP Stream Depayloading
    rtp:  rtpstreampay: RTP Stream Payloading
    rtp:  rtpvrawpay: RTP Raw Video payloader
    rtp:  rtpvrawdepay: RTP Raw Video depayloader
    rtp:  rtpvp9pay: RTP VP9 payloader
    rtp:  rtpvp9depay: RTP VP9 depayloader
    rtp:  rtpvp8pay: RTP VP8 payloader
    rtp:  rtpvp8depay: RTP VP8 depayloader
    rtp:  rtpvorbispay: RTP Vorbis payloader
    rtp:  rtpvorbisdepay: RTP Vorbis depayloader
    rtp:  rtptheorapay: RTP Theora payloader
    rtp:  rtptheoradepay: RTP Theora depayloader
    rtp:  rtpsv3vdepay: RTP SVQ3 depayloader
    rtp:  rtpspeexdepay: RTP Speex depayloader
    rtp:  rtpspeexpay: RTP Speex payloader
    rtp:  rtpsirendepay: RTP Siren packet depayloader
    rtp:  rtpsirenpay: RTP Payloader for Siren Audio
    rtp:  rtpsbcpay: RTP packet payloader
    rtp:  rtpsbcdepay: RTP SBC audio depayloader
    rtp:  rtpqdm2depay: RTP QDM2 depayloader
    rtp:  rtpqcelpdepay: RTP QCELP depayloader
    rtp:  rtpmp4gpay: RTP MPEG4 ES payloader
    rtp:  rtpmp4gdepay: RTP MPEG4 ES depayloader
    rtp:  rtpmp4adepay: RTP MPEG4 audio depayloader
    rtp:  rtpmp4apay: RTP MPEG4 audio payloader
    rtp:  rtpmp4vdepay: RTP MPEG4 video depayloader
    rtp:  rtpmp4vpay: RTP MPEG4 Video payloader
    rtp:  rtpmp2tpay: RTP MPEG2 Transport Stream payloader
    rtp:  rtpmp2tdepay: RTP MPEG Transport Stream depayloader
    rtp:  rtpmp1sdepay: RTP MPEG1 System Stream depayloader
    rtp:  asteriskh263: RTP Asterisk H263 depayloader
    rtp:  rtpL24depay: RTP audio depayloader
    rtp:  rtpL24pay: RTP audio payloader
    rtp:  rtpL16depay: RTP audio depayloader
    rtp:  rtpL16pay: RTP audio payloader
    rtp:  rtpL8depay: RTP audio depayloader
    rtp:  rtpL8pay: RTP audio payloader
    rtp:  rtpklvpay: RTP KLV Payloader
    rtp:  rtpklvdepay: RTP KLV Depayloader
    rtp:  rtpjpegpay: RTP JPEG payloader
    rtp:  rtpjpegdepay: RTP JPEG depayloader
    rtp:  rtpj2kpay: RTP JPEG 2000 payloader
    rtp:  rtpj2kdepay: RTP JPEG 2000 depayloader
    rtp:  rtph265pay: RTP H265 payloader
    rtp:  rtph265depay: RTP H265 depayloader
    rtp:  rtph264pay: RTP H264 payloader
    rtp:  rtph264depay: RTP H264 depayloader
    rtp:  rtph263pay: RTP H263 packet payloader
    rtp:  rtph263depay: RTP H263 depayloader
    rtp:  rtph263pdepay: RTP H263 depayloader
    rtp:  rtph263ppay: RTP H263 payloader
    rtp:  rtph261depay: RTP H261 depayloader
    rtp:  rtph261pay: RTP H261 packet payloader
    rtp:  rtpopuspay: RTP Opus payloader
    rtp:  rtpopusdepay: RTP Opus packet depayloader
    rtp:  rtpmpvpay: RTP MPEG2 ES video payloader
    rtp:  rtpmpvdepay: RTP MPEG video depayloader
    rtp:  rtpmparobustdepay: RTP MPEG audio depayloader
    rtp:  rtpmpapay: RTP MPEG audio payloader
    rtp:  rtpmpadepay: RTP MPEG audio depayloader
    rtp:  rtppcmapay: RTP PCMA payloader
    rtp:  rtppcmupay: RTP PCMU payloader
    rtp:  rtppcmudepay: RTP PCMU depayloader
    rtp:  rtppcmadepay: RTP PCMA depayloader
    rtp:  rtpamrpay: RTP AMR payloader
    rtp:  rtpamrdepay: RTP AMR depayloader
    rtp:  rtpgsmpay: RTP GSM payloader
    rtp:  rtpgsmdepay: RTP GSM depayloader
    rtp:  rtpg729pay: RTP G.729 payloader
    rtp:  rtpg729depay: RTP G.729 depayloader
    rtp:  rtpg726pay: RTP G.726 payloader
    rtp:  rtpg726depay: RTP G.726 depayloader
    rtp:  rtpg723pay: RTP G.723 payloader
    rtp:  rtpg723depay: RTP G.723 depayloader
    rtp:  rtpg722pay: RTP audio payloader
    rtp:  rtpg722depay: RTP audio depayloader
    rtp:  rtpilbcdepay: RTP iLBC depayloader
    rtp:  rtpilbcpay: RTP iLBC Payloader
    rtp:  rtpgstpay: RTP GStreamer payloader
    rtp:  rtpgstdepay: GStreamer depayloader
    rtp:  rtpdvpay: RTP DV Payloader
    rtp:  rtpdvdepay: RTP DV Depayloader
    rtp:  rtpceltpay: RTP CELT payloader
    rtp:  rtpceltdepay: RTP CELT depayloader
    rtp:  rtpbvpay: RTP BV Payloader
    rtp:  rtpbvdepay: RTP BroadcomVoice depayloader
    rtp:  rtpac3pay: RTP AC3 audio payloader
    rtp:  rtpac3depay: RTP AC3 depayloader
    rsvg:  rsvgdec: SVG image decoder
    rsvg:  rsvgoverlay: RSVG overlay
    rfbsrc:  rfbsrc: Rfb source
    replaygain:  rgvolume: ReplayGain volume
    replaygain:  rglimiter: ReplayGain limiter
    replaygain:  rganalysis: ReplayGain analysis
    removesilence:  removesilence: RemoveSilence
    rawparse:  rawvideoparse: rawvideoparse
    rawparse:  rawaudioparse: rawaudioparse
    rawparse:  unalignedvideoparse: unalignedvideoparse
    rawparse:  unalignedaudioparse: unalignedaudioparse
    pnm:  pnmenc: PNM image encoder
    pnm:  pnmdec: PNM image decoder
    png:  pngenc: PNG image encoder
    png:  pngdec: PNG image decoder
    playback:  parsebin: Parse Bin
    playback:  urisourcebin: URI reader
    playback:  uridecodebin3: URI Decoder
    playback:  uridecodebin: URI Decoder
    playback:  decodebin3: Decoder Bin 3
    playback:  decodebin: Decoder Bin
    playback:  streamsynchronizer: Stream Synchronizer
    playback:  subtitleoverlay: Subtitle Overlay
    playback:  playsink: Player Sink
    playback:  playbin3: Player Bin 3
    playback:  playbin: Player Bin 2
    pcapparse:  irtspparse: IRTSPParse
    pcapparse:  pcapparse: PCapParse
    pango:  textrender: Text renderer
    pango:  clockoverlay: Clock overlay
    pango:  timeoverlay: Time overlay
    pango:  textoverlay: Text overlay
    opusparse:  opusparse: Opus audio parser
    opus:  opusdec: Opus audio decoder
    opus:  opusenc: Opus audio encoder
    openjpeg:  openjpegenc: OpenJPEG JPEG2000 encoder
    openjpeg:  openjpegdec: OpenJPEG JPEG2000 decoder
    openglmixers:  glmosaic: OpenGL mosaic
    openglmixers:  glstereomix: OpenGL stereo video combiner
    openglmixers:  glvideomixerelement: OpenGL video_mixer
    openglmixers:  glvideomixer: OpenGL video_mixer bin
    openglmixers:  glmixerbin: OpenGL video_mixer empty bin
    opengl:  gldifferencematte: Gstreamer OpenGL DifferenceMatte
    opengl:  glfilterglass: OpenGL glass filter
    opengl:  gloverlay: Gstreamer OpenGL Overlay
    opengl:  gldeinterlace: OpenGL deinterlacing filter
    opengl:  gltestsrc: Video test source
    opengl:  glstereosplit: GLStereoSplit
    opengl:  glviewconvert: OpenGL Multiview/3D conversion filter
    opengl:  glfilterapp: OpenGL application filter
    opengl:  glshader: OpenGL fragment shader filter
    opengl:  glcolorscale: OpenGL color scale
    opengl:  gleffects_laplacian: Laplacian Convolution Demo Effect
    opengl:  gleffects_blur: Blur with 9x9 separable convolution Effect
    opengl:  gleffects_sobel: Sobel edge detection Effect
    opengl:  gleffects_glow: Glow Lighting Effect
    opengl:  gleffects_sin: All Grey but Red Effect
    opengl:  gleffects_xray: Glowing negative effect
    opengl:  gleffects_lumaxpro: Luma Cross Processing Effect
    opengl:  gleffects_xpro: Cross Processing Effect
    opengl:  gleffects_sepia: Sepia Toning Effect
    opengl:  gleffects_heat: Heat Signature Effect
    opengl:  gleffects_square: Square Effect
    opengl:  gleffects_bulge: Bulge Effect
    opengl:  gleffects_twirl: Twirl Effect
    opengl:  gleffects_fisheye: FishEye Effect
    opengl:  gleffects_tunnel: Light Tunnel Effect
    opengl:  gleffects_stretch: Stretch Effect
    opengl:  gleffects_squeeze: Squeeze Effect
    opengl:  gleffects_mirror: Mirror Effect
    opengl:  gleffects_identity: Do nothing Effect
    opengl:  gleffects: Gstreamer OpenGL Effects
    opengl:  glvideoflip: OpenGL video flip filter
    opengl:  gltransformation: OpenGL transformation filter
    opengl:  glfiltercube: OpenGL cube filter
    opengl:  glsrcbin: GL Src Bin
    opengl:  glsinkbin: GL Sink Bin
    opengl:  glfilterbin: GL Filter Bin
    opengl:  glcolorbalance: Video balance
    opengl:  glcolorconvert: OpenGL color converter
    opengl:  gldownload: OpenGL downloader
    opengl:  glupload: OpenGL uploader
    opengl:  glimagesinkelement: OpenGL video sink
    opengl:  glimagesink: GL Sink Bin
    ogg:  oggaviparse: Ogg AVI parser
    ogg:  oggparse: Ogg parser
    ogg:  ogmtextparse: OGM text stream parser
    ogg:  ogmvideoparse: OGM video stream parser
    ogg:  ogmaudioparse: OGM audio stream parser
    ogg:  oggmux: Ogg muxer
    ogg:  oggdemux: Ogg demuxer
    nice:  nicesink: ICE sink
    nice:  nicesrc: ICE source
    mxf:  mxfmux: MXF muxer
    mxf:  mxfdemux: MXF Demuxer
    multipart:  multipartmux: Multipart muxer
    multipart:  multipartdemux: Multipart demuxer
    multifile:  splitmuxsrc: Split File Demuxing Bin
    multifile:  splitmuxsink: Split Muxing Bin
    multifile:  splitfilesrc: Split-File Source
    multifile:  multifilesink: Multi-File Sink
    multifile:  multifilesrc: Multi-File Source
    mulaw:  mulawdec: Mu Law audio decoder
    mulaw:  mulawenc: Mu Law audio encoder
    mpg123:  mpg123audiodec: mpg123 mp3 decoder
    midi:  midiparse: MidiParse
    matroska:  webmmux: WebM muxer
    matroska:  matroskamux: Matroska muxer
    matroska:  matroskaparse: Matroska parser
    matroska:  matroskademux: Matroska demuxer
    level:  level: Level
    legacyrawparse:  audioparse: Audio Parse
    legacyrawparse:  videoparse: Video Parse
    lame:  lamemp3enc: L.A.M.E. mp3 encoder
    kate:  katetag: Kate stream tagger
    kate:  kateparse: Kate stream parser
    kate:  kateenc: Kate stream encoder
    kate:  katedec: Kate stream text decoder
    jpegformat:  jifmux: JPEG stream muxer
    jpegformat:  jpegparse: JPEG stream parser
    jpeg:  jpegdec: JPEG image decoder
    jpeg:  jpegenc: JPEG image encoder
    ivtc:  combdetect: Comb Detect
    ivtc:  ivtc: Inverse Telecine
    isomp4:  qtmoovrecover: QT Moov Recover
    isomp4:  mj2mux: MJ2 Muxer
    isomp4:  3gppmux: 3GPP Muxer
    isomp4:  ismlmux: ISML Muxer
    isomp4:  mp4mux: MP4 Muxer
    isomp4:  qtmux: QuickTime Muxer
    isomp4:  rtpxqtdepay: RTP packet depayloader
    isomp4:  qtdemux: QuickTime demuxer
    interleave:  deinterleave: Audio deinterleaver
    interleave:  interleave: Audio interleaver
    interlace:  interlace: Interlace filter
    inter:  intervideosink: Internal video sink
    inter:  intervideosrc: Internal video source
    inter:  intersubsink: Internal subtitle sink
    inter:  intersubsrc: Internal subtitle source
    inter:  interaudiosink: Internal audio sink
    inter:  interaudiosrc: Internal audio source
    id3tag:  id3mux: ID3 v1 and v2 Muxer
    id3demux:  id3demux: ID3 tag demuxer
    icydemux:  icydemux: ICY tag demuxer
    hls:  hlssink2: HTTP Live Streaming sink
    hls:  hlssink: HTTP Live Streaming sink
    hls:  hlsdemux: HLS Demuxer
    goom2k1:  goom2k1: GOOM: what a GOOM! 2k1 edition
    goom:  goom: GOOM: what a GOOM!
    geometrictransform:  perspective: perspective
    geometrictransform:  fisheye: fisheye
    geometrictransform:  mirror: mirror
    geometrictransform:  square: square
    geometrictransform:  tunnel: tunnel
    geometrictransform:  bulge: bulge
    geometrictransform:  stretch: stretch
    geometrictransform:  waterripple: waterripple
    geometrictransform:  twirl: twirl
    geometrictransform:  sphere: sphere
    geometrictransform:  rotate: rotate
    geometrictransform:  pinch: pinch
    geometrictransform:  marble: marble
    geometrictransform:  kaleidoscope: kaleidoscope
    geometrictransform:  diffuse: diffuse
    geometrictransform:  circle: circle
    gdp:  gdppay: GDP Payloader
    gdp:  gdpdepay: GDP Depayloader
    gdkpixbuf:  gdkpixbufsink: GdkPixbuf sink
    gdkpixbuf:  gdkpixbufoverlay: GdkPixbuf Overlay
    gdkpixbuf:  gdkpixbufdec: GdkPixbuf image decoder
    gaudieffects:  gaussianblur: GstGaussianBlur
    gaudieffects:  solarize: Solarize
    gaudieffects:  exclusion: Exclusion
    gaudieffects:  dodge: Dodge
    gaudieffects:  dilate: Dilate
    gaudieffects:  chromium: Chromium
    gaudieffects:  burn: Burn
    freeverb:  freeverb: Reverberation/room effect
    flxdec:  flxdec: FLX video decoder
    flv:  flvmux: FLV muxer
    flv:  flvdemux: FLV Demuxer
    flac:  flactag: FLAC tagger
    flac:  flacdec: FLAC audio decoder
    flac:  flacenc: FLAC audio encoder
    fieldanalysis:  fieldanalysis: Video field analysis
    equalizer:  equalizer-10bands: 10 Band Equalizer
    equalizer:  equalizer-3bands: 3 Band Equalizer
    equalizer:  equalizer-nbands: N Band Equalizer
    effectv:  rippletv: RippleTV effect
    effectv:  streaktv: StreakTV effect
    effectv:  radioactv: RadioacTV effect
    effectv:  optv: OpTV effect
    effectv:  quarktv: QuarkTV effect
    effectv:  revtv: RevTV effect
    effectv:  vertigotv: VertigoTV effect
    effectv:  shagadelictv: ShagadelicTV
    effectv:  warptv: WarpTV effect
    effectv:  dicetv: DiceTV effect
    effectv:  agingtv: AgingTV effect
    effectv:  edgetv: EdgeTV effect
    dvdspu:  dvdspu: Sub-picture Overlay
    dvbsuboverlay:  dvbsuboverlay: DVB Subtitles Overlay
    dv:  dvdec: DV video decoder
    dv:  dvdemux: DV system stream demuxer
    dtmf:  rtpdtmfdepay: RTP DTMF packet depayloader
    dtmf:  rtpdtmfsrc: RTP DTMF packet generator
    dtmf:  dtmfsrc: DTMF tone generator
    directsound:  directsoundsinkdeviceprovider (GstDeviceProviderFactory)
    directsound:  directsoundsink: Direct Sound Audio Sink
    deinterlace:  deinterlace: Deinterlacer
    debugutilsbad:  fakevideosink: Fake Video Sink
    debugutilsbad:  errorignore: Convert some GstFlowReturn types into others
    debugutilsbad:  watchdog: Watchdog
    debugutilsbad:  debugspy: DebugSpy
    debugutilsbad:  compare: Compare buffers
    debugutilsbad:  chopmydata: FIXME
    debugutilsbad:  fpsdisplaysink: Measure and show framerate on videosink
    debugutilsbad:  checksumsink: Checksum sink
    debug:  cpureport: CPU report
    debug:  testsink: Test plugin
    debug:  taginject: TagInject
    debug:  progressreport: Progress report
    debug:  pushfilesrc: Push File Source
    debug:  navseek: Seek based on left-right arrows
    debug:  rndbuffersize: Random buffer size
    debug:  capssetter: CapsSetter
    debug:  breakmydata: Break my data
    dashdemux:  dashdemux: DASH Demuxer
    d3d:  d3dvideosink: Direct3D video sink
    cutter:  cutter: Audio cutter
    coreelements:  streamiddemux: Streamid Demux
    coreelements:  valve: Valve element
    coreelements:  multiqueue: MultiQueue
    coreelements:  typefind: TypeFind
    coreelements:  tee: Tee pipe fitting
    coreelements:  filesink: File Sink
    coreelements:  queue2: Queue 2
    coreelements:  queue: Queue
    coreelements:  output-selector: Output selector
    coreelements:  input-selector: Input selector
    coreelements:  identity: Identity
    coreelements:  funnel: Funnel pipe fitting
    coreelements:  filesrc: File Source
    coreelements:  fakesink: Fake Sink
    coreelements:  fakesrc: Fake Source
    coreelements:  downloadbuffer: DownloadBuffer
    coreelements:  dataurisrc: data: URI source element
    coreelements:  concat: Concat
    coreelements:  capsfilter: CapsFilter
    compositor:  compositor: Compositor
    coloreffects:  chromahold: Chroma hold filter
    coloreffects:  coloreffects: Color Look-up Table filter
    cairo:  cairooverlay: Cairo overlay
    bayer:  rgb2bayer: RGB to Bayer converter
    bayer:  bayer2rgb: Bayer to RGB decoder for cameras
    avi:  avisubtitle: Avi subtitle parser
    avi:  avimux: Avi muxer
    avi:  avidemux: Avi demuxer
    auparse:  auparse: AU audio demuxer
    audiovisualizers:  wavescope: Waveform oscilloscope
    audiovisualizers:  synaescope: Synaescope
    audiovisualizers:  spectrascope: Frequency spectrum scope
    audiovisualizers:  spacescope: Stereo visualizer
    audiotestsrc:  audiotestsrc: Audio test source
    audioresample:  audioresample: Audio resampler
    audiorate:  audiorate: Audio rate adjuster
    audioparsers:  wavpackparse: Wavpack audio stream parser
    audioparsers:  sbcparse: SBC audio parser
    audioparsers:  mpegaudioparse: MPEG1 Audio Parser
    audioparsers:  flacparse: FLAC audio parser
    audioparsers:  dcaparse: DTS Coherent Acoustics audio stream parser
    audioparsers:  ac3parse: AC3 audio stream parser
    audioparsers:  amrparse: AMR audio stream parser
    audioparsers:  aacparse: AAC audio stream parser
    audiomixer:  audiointerleave: AudioInterleave
    audiomixer:  liveadder: AudioMixer
    audiomixer:  audiomixer: AudioMixer
    audiofxbad:  audiochannelmix: Simple stereo audio mixer
    audiofx:  scaletempo: Scaletempo
    audiofx:  audioecho: Audio echo
    audiofx:  audiofirfilter: Audio FIR filter
    audiofx:  audiowsincband: Band pass & band reject filter
    audiofx:  audiowsinclimit: Low pass & high pass filter
    audiofx:  audioiirfilter: Audio IIR filter
    audiofx:  audiochebband: Band pass & band reject filter
    audiofx:  audiocheblimit: Low pass & high pass filter
    audiofx:  audiodynamic: Dynamic range controller
    audiofx:  audioamplify: Audio amplifier
    audiofx:  audiokaraoke: AudioKaraoke
    audiofx:  audioinvert: Audio inversion
    audiofx:  audiopanorama: Stereo positioning
    audioconvert:  audioconvert: Audio converter
    audiobuffersplit:  audiobuffersplit: Audio Buffer Split
    app:  appsink: AppSink
    app:  appsrc: AppSrc
    apetag:  apedemux: APE tag demuxer
    alphacolor:  alphacolor: Alpha color filter
    alpha:  alpha: Alpha filter
    alaw:  alawdec: A Law audio decoder
    alaw:  alawenc: A Law audio encoder
    aiff:  aiffmux: AIFF audio muxer
    aiff:  aiffparse: AIFF audio demuxer
    adpcmenc:  adpcmenc: ADPCM encoder
    adpcmdec:  adpcmdec: ADPCM decoder
    adder:  adder: Adder
    accurip:  accurip: AccurateRip(TM) CRC element
    subenc:  srtenc: Srt encoder
    subenc:  webvttenc: WebVTT encoder
    proxy:  proxysrc: Proxy source
    proxy:  proxysink: Proxy Sink
    imagefreeze:  imagefreeze: Still frame stream generator
    dtls:  dtlsenc: DTLS Encoder
    dtls:  dtlsdec: DTLS Decoder
    dtls:  dtlssrtpdec: DTLS-SRTP Decoder
    dtls:  dtlssrtpenc: DTLS-SRTP Encoder
    dtls:  dtlssrtpdemux: DTLS SRTP Demultiplexer
    coretracers:  latency (GstTracerFactory)
    coretracers:  log (GstTracerFactory)
    coretracers:  stats (GstTracerFactory)
    coretracers:  leaks (GstTracerFactory)
    autodetect:  autovideosink: Auto video sink
    autodetect:  autovideosrc: Auto video source
    autodetect:  autoaudiosink: Auto audio sink
    autodetect:  autoaudiosrc: Auto audio source
    autoconvert:  autoconvert: Select convertor based on caps
    autoconvert:  autovideoconvert: Select color space convertor based on caps
    staticelements:  bin: Generic bin
    staticelements:  pipeline: Pipeline object
    
    Total count: 149 plugins, 671 features
    

  • Lifetime Qt Champion

    Then use the openh264enc encoder in place of the other.



  • @SGaist thanks for the suggestion,

    I tryed to adapt this exemple with openh264enc :

    gst-launch-1.0 -v rfbsrc host=10.81.4.97 port=5900 password=pa009v view-only=true ! queue ! openh264enc ! "video/x-h264, stream-format=(string)byte-stream" ! h264parse ! qtmux ! filesink location=test.mp4 
    

    output:

    WARNING: erroneous pipeline: could not link queue0 to openh264enc0
    

    if i remove the 'queue' element then i got

    WARNING: erroneous pipeline: could not link rfbsrc0 to openh264enc0
    

    How to link my rfbsrc to openh264enc please ?



  • I tryed to add 'decodebin' between my rfbsrc and the openh264enc ,

    Now i have format issue again.. a .mp4 file is created but empty, can this be related to my VNC Server ? i use Ultra VNC as server

    gst-launch-1.0 -v rfbsrc host=xx.xx.x.xx port=5900 password=xxxx view-only=true ! decodebin ! "video/x-h264, stream-format=(string)byte-stream" ! openh264enc ! h264parse ! qtmux ! filesink location=test.mp4 
    
    Setting pipeline to PAUSED ...
    Pipeline is live and does not need PREROLL ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    
    ** (gst-launch-1.0:8476): CRITICAL **: gst_video_info_set_format: assertion 'format != GST_VIDEO_FORMAT_UNKNOWN' failed
    
    ** (gst-launch-1.0:8476): CRITICAL **: gst_video_info_to_caps: assertion 'info->finfo->format != GST_VIDEO_FORMAT_UNKNOWN' failed
    
    (gst-launch-1.0:8476): GStreamer-CRITICAL **: gst_event_new_caps: assertion 'caps != NULL' failed
    
    (gst-launch-1.0:8476): GStreamer-CRITICAL **: gst_pad_push_event: assertion 'GST_IS_EVENT (event)' failed
    
    (gst-launch-1.0:8476): GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed
    ERROR: from element /GstPipeline:pipeline0/GstRfbSrc:rfbsrc0: Internal data stream error.
    Additional debug info:
    gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstRfbSrc:rfbsrc0:
    streaming stopped, reason not-negotiated (-4)
    Execution ended after 0:00:00.697763210
    Setting pipeline to PAUSED ...
    Setting pipeline to READY ...
    Setting pipeline to NULL ...
    Freeing pipeline ...
    


  • Hi,
    @SGaist I finally made this working pipeline :

    gst-launch-1.0 -v rfbsrc host=xx.xx.x.xx port=5900 password=passw view-only=true ! videoconvert !  openh264enc !  "video/x-h264, stream-format=(string)byte-stream" ! openh264dec !  autovideosink
    

    The remote gui is displayed in an internal GStreamer window .

    Now i only replace the autovideosink by filesink location=vid.mp4 to save the video to a file instead of displaying it.

    gst-launch-1.0 -v rfbsrc host=xx.xx.x.xx port=5900 password=passw view-only=true ! videoconvert !  openh264enc !  "video/x-h264, stream-format=(string)byte-stream" ! openh264dec !  filesink location=vid.mp4
    

    The video file is created (and not empty) but i can't play it with WindowsMediaPlayer or VLC
    I tryed filesink location=vid.h264 and enabled H264 Demuxer for VLC but still can't open the file.

    edit :
    In some exemples i can see that the last step before filesink is XXXXmux , but if i try

    gst-launch-1.0 -v rfbsrc host=10.81.4.68 port=5900 password=pa009v view-only=true ! videoconvert !  openh264enc  ! flvmux  !  filesink location=test.flv
    

    i get : WARNING: erroneous pipeline: could not link openh264enc0 to flvmux0

    Thank you for any suggestion



  • I added missing h264parse and mp4mux before writing to the file

    Now the pipeline looks like this :

    gst-launch-1.0 -v rfbsrc host=xx.xx.x.xx port=5900 password=passw view-only=true 
    !  videoconvert ! openh264enc bitrate=4096 
    ! "video/x-h264, stream-format=(string)byte-stream" 
    ! h264parse 
    ! mp4mux 
    ! filesink location=video.mp4  sync=false
    

    but the video file is still not 'playable'
    i read on github
    "Some muxers such as mp4mux write additional information to disk when they receive EOS. Without that extra information, the file is useless."

    so i try to pass -e instead of -v , the file is created and grows in size (still not playable), but when i press ctrl+c to stop i get this error :

    handling interrupt.Interrupt: Stopping pipeline ...EOS on shutdown enabled -- Forcing EOS on the pipeline
    Waiting for EOS...ERROR: from element /GstPipeline:pipeline0/GstRfbSrc:rfbsrc0: Error on setup VNC connection to host xx.xx.x.xx on port 5900Additional debug info:
    gstrfbsrc.c(524): gst_rfb_src_fill (): /GstPipeline:pipeline0/GstRfbSrc:rfbsrc0
    An error happened while waiting for EOS
    Execution ended after 0:00:07.166707941
    Setting pipeline to PAUSED ...
    Setting pipeline to READY ...
    Setting pipeline to NULL ...
    Freeing pipeline ...
    

    Now there is a probleme with the VNC connection ?

    I think no, because i did the same thing unsig tee and the connection looks ok, the stream is displayed, pressing ctrl+c i have the same output saying "Error on setup VNC connection to host..."

    tee version (stream is displayed / file created but not readable ) :

    gst-launch-1.0 -e rfbsrc host=xx.xx.x.xx port=5900 password=passw view-only=true
    !  videoconvert 
    ! tee name = t
    ! queue 
    ! openh264enc bitrate=4096  
    ! "video/x-h264, stream-format=(string)byte-stream"
    ! h264parse 
    ! mp4mux
    ! filesink location=video.mp4  sync=false 
    t. 
    ! queue 
    ! autovideosink 
    

  • Lifetime Qt Champion

    A silly question, did you try to read the file with gstreamer directly ?



  • @SGaist hi!
    Yes, i had that idea only this morning.. Everything works almost as expected.

    This will Display / Record :

    gst-launch-1.0 -e rfbsrc host=xx.xx.x.xx port=5900 password=passw view-only=true !  videoconvert !  tee name = t t. ! queue ! openh264enc bitrate=4096  ! "video/x-h264, stream-format=(string)byte-stream" ! h264parse ! mp4mux ! filesink location=capture.mp4  sync=false t. ! queue ! autovideosink 
    

    This will read the recorded .mp4 file

    gst-launch-1.0 playbin uri=file:///c:/users/lev/documents/VNC_CLIENT_Tests/capture.mp4
    

    So everything works, but the video quality/ framerate are very bad... if something happends on the remote pc i have to wailt 2~3 secondes before i see it. Even with the official Viewer. I Abandon this solution, unless someone has a trick to highly optimize this.

    My first solution with your QVNCClient (it is made by you right ?) works much better with 15 ips capture.
    Then i reconstruct a video combining the images (even if simetimes i have desync of maximum 1 sec)

    Thank you again for your valuable help !

    [edit: fixed link SGaist]


  • Lifetime Qt Champion

    Maybe another encoder could work better.

    No, QVNCClient is not from me, I just found it :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.