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 GStreamerPlease 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
-
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 itmsg = 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 ?
-
@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();
^
-
@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?
-
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); ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
-
@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 !
-
@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.
-
@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
-
@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);
-
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
-
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)
-
@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.
-
@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.0C:\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
-
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 trygst-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
-
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]
-
Maybe another encoder could work better.
No, QVNCClient is not from me, I just found it :)