Dynamic text-overlay on live-stream using gst-launch-1.0

Nicolas Dufresne nicolas at ndufresne.ca
Mon Feb 27 15:33:54 UTC 2017


Le lundi 27 février 2017 à 07:05 -0800, Adam Plocher a écrit :
> Nicolas, thank you for your response.  fdsrc seems like it would be a
> good solution, but I'm having issues getting it to work.
> It seems like I need to specify the caps after the fdsrc, otherwise
> it fails in other ways.  e.g.
> 
> 
> Specifying text/x-raw:
> 
> tail -f /home/pi/test.txt | /opt/gst/bin/gst-launch-1.0 fdsrc fd=0 !
> "text/x-raw" ! txt. videotestsrc ! videoconvert ! decodebin !
> textoverlay name=txt ! omxh264enc target-bitrate=800000 control-
> rate=3 ! tcpserversink host=0.0.0.0 port=9000

I think you forgot to keep subparse element.
> Results in:
> 
> Pipeline is PREROLLING ...
> ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0:
> Filter caps do not completely specify the output format
> Additional debug info:
> gstcapsfilter.c(455): gst_capsfilter_prepare_buf ():
> /GstPipeline:pipeline0/GstCapsFilter:capsfilter0:
> Output caps are unfixed: text/x-raw, format=(string){ pango-markup,
> utf8 }
> ERROR: pipeline doesn't want to preroll.
> 
> 
> Specifying text/plain:
> 
> tail -f /home/pi/test.txt | /opt/gst/bin/gst-launch-1.0 fdsrc fd=0 !
> "text/plain" ! txt. videotestsrc ! videoconvert ! decodebin !
> textoverlay name=txt ! omxh264enc target-bitrate=800000 control-
> rate=3 ! tcpserversink host=0.0.0.0 port=9000
> 
> Results in:
> 
> 0:00:00.501757360  4549  0x1e085c0 ERROR           GST_PIPELINE
> grammar.y:714:gst_parse_perform_link: could not link fdsrc0 to txt,
> txt can't handle caps text/plain
> WARNING: erroneous pipeline: could not link fdsrc0 to txt, txt can't
> handle caps text/plain
> 
> 
> No caps at all:
> 
> tail -f /home/pi/test.txt | /opt/gst/bin/gst-launch-1.0 fdsrc fd=0 !
> txt. videotestsrc ! videoconvert ! decodebin ! textoverlay name=txt !
>  omxh264enc target-bitrate=800000 control-rate=3 ! tcpserversink
> host=0.0.0.0 port=9000
> 
> Results in:
> 
> Pipeline is PREROLLING ...
> WARNING: from element /GstPipeline:pipeline0/GstTextOverlay:txt:
> Could not multiplex stream.
> Additional debug info:
> gstbasetextoverlay.c(2449): gst_base_text_overlay_video_event ():
> /GstPipeline:pipeline0/GstTextOverlay:txt:
> received non-TIME newsegment event on video input
> WARNING: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0:
> Delayed linking failed.
> Additional debug info:
> ./grammar.y(510): gst_parse_no_more_pads ():
> /GstPipeline:pipeline0/GstDecodeBin:decodebin0:
> failed delayed linking some pad of GstDecodeBin named decodebin0 to
> some pad of GstTextOverlay named txt
> ERROR: from element
> /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data
> stream error.
> Additional debug info:
> gstbasesrc.c(2951): gst_base_src_loop ():
> /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
> streaming stopped, reason not-linked (-1)
> ERROR: pipeline doesn't want to preroll.
> 
> 
> There is some information here (regarding the older version of gst-
> launch): 
> http://gstreamer-devel.966125.n4.nabble.com/Dynamic-text-again-td3676
> 141.html
> 
> And that links to this bug that was resolved (again, old gst-
> launch): 
> https://bugzilla.gnome.org/show_bug.cgi?id=654959
> 
> 
> I've seen a couple examples which used the "text/plain" caps.
> 
> I'm certainly open to cracking open the Python lib and giving it a
> shot.  I would need to read up on it a bit and I'm not familiar with
> the appsrc, either, but that's something else I'm open to. I have
> done very basic stuff with the Python libs but nothing too fancy or
> dynamic (basic pipelines, no more complex than I would get from gst-
> launch-1.0).
> 
> What would you recommend?  Is there an example or resource you could
> point me towards?
> 
> Thank you for your help
> 
> 
> 
> On Sun, Feb 26, 2017 at 2:46 PM, Nicolas Dufresne <nicolas at ndufresne.
> ca> wrote:
> > Le dimanche 26 février 2017 à 06:18 -0800, Adam Plocher a écrit :
> > 
> > > Hello, I apologize if I'm posting this in the wrong place. I've
> > 
> > > previously asked this on stackoverflow and never got a
> > response: http
> > 
> > > ://stackoverflow.com/questions/42128804/polling-a-text-file-and-
> > 
> > > overlaying-the-result-in-gstreamer
> > 
> > >
> > 
> > > I have a Raspberry Pi with a camera and I'm live streaming that
> > back
> > 
> > > to another unit (it's for a baby monitor).  On the same Pi, I
> > have a
> > 
> > > temperature sensor that is dumping the current temp to a file
> > every 5
> > 
> > > seconds.
> > 
> > >
> > 
> > > My question: Is it possible to somehow poll that txt file and
> > update
> > 
> > > a text-overlay on the live stream based on the current contents
> > of
> > 
> > > that file?
> > 
> > 
> > 
> > filsesrc does not have this feature unfortunatly. I believe using
> > 
> > fdsrc, you could:
> > 
> > 
> > 
> >   tail -f text.txt | gst-launch-1.0 fdsrc ! ...
> > 
> > 
> > 
> > Let me know if that is a good work-around. If you are writing an
> > app,
> > 
> > this can be done with a pipe, or if you prefer, with appsrc.
> > 
> > 
> > 
> > >
> > 
> > > I've tried using a filesrc and subparse, and it will grab it
> > 
> > > initially if I format the input text file properly, but it
> > doesn't
> > 
> > > seem to update itself:
> > 
> > >
> > 
> > > gst-launch-1.0 -v \
> > 
> > >     filesrc location=/home/pi/temp.txt ! subparse ! txt.
> > rpicamsrc
> > 
> > > awb-mode=0 awb-gain-red=1 awb-gain-blue=2 rotation=0
> > bitrate=820000
> > 
> > > preview=false brightness=67 contrast=30 sharpness=40 \
> > 
> > >     ! video/x-h264,width=800,height=480,framerate=10/1 \
> > 
> > >     ! h264parse ! decodebin ! videoconvert ! clockoverlay shaded-
> > 
> > > background=true draw-shadow=true font-desc="Nimbus Mono" \
> > 
> > >     ! textoverlay name=txt shaded-background=yes \
> > 
> > >     ! omxh264enc control-rate=3 target-bitrate=850000 \
> > 
> > >     ! tcpserversink host=0.0.0.0 port=5555 sync=true
> > 
> > >
> > 
> > > The input file looks like this:
> > 
> > > 1
> > 
> > > 00:00:00,000 --> 99:59:59,000
> > 
> > > 69 degrees
> > 
> > > Thank you!
> > 
> > > _______________________________________________
> > 
> > > gstreamer-devel mailing list
> > 
> > > gstreamer-devel at lists.freedesktop.org
> > 
> > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > _______________________________________________
> > 
> > gstreamer-devel mailing list
> > 
> > gstreamer-devel at lists.freedesktop.org
> > 
> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > 
> > 
> 
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170227/f25975ed/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170227/f25975ed/attachment-0001.sig>


More information about the gstreamer-devel mailing list