Gst Webkit

Easiest way to build overlays with Gstreamer

Our goal is to develop a Webkit mixer providing javascript interactions.

Using webkit you can use all css animations, all javascript interactions. You don’t need to code complex pipelines in c / python to do that.

You can use this gstreamer element to do :

Installation

Requirements

Compilation

apt-get install libwebkit-dev libcairo-dev
./autogen.sh
make
sudo make install

Usage

Factory Details:
  Rank                     none (0)
  Long-name                WebkitSrc
  Klass                    Html / css / js renderer element
  Description              Html / css / js renderer element
  Author                   Ludovic Bouguerra <ludovic.bouguerra@kalyzee.com>

Plugin Details:
  Name                     webkitsrc
  Description              webkitsrc
  Filename                 /usr/local/lib/gstreamer-1.0/libgstwebkitsrc.so
  Version                  1.0.0
  License                  LGPL
  Source module            gst-webkit
  Binary package           Webkit
  Origin URL               http://www.kalyzee.com/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSrc
                         +----GstPushSrc
                               +----GstWebkitSrc

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw
                 format: { (string)RGBA }
                  width: { (int)1280 }
                 height: { (int)720 }
              framerate: { (fraction)25/1 }

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SRC: 'src'
    Pad Template: 'src'

Element Properties:
  name                : The name of the object
                        flags: accès en lecture, accès en écriture
                        String. Default: "webkitsrc0"
  parent              : The parent of the object
                        flags: accès en lecture, accès en écriture
                        Object of type "GstObject"
  blocksize           : Size in bytes to read per buffer (-1 = default)
                        flags: accès en lecture, accès en écriture
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096
  num-buffers         : Number of buffers to output before sending EOS (-1 = unlimited)
                        flags: accès en lecture, accès en écriture
                        Integer. Range: -1 - 2147483647 Default: -1
  typefind            : Run typefind before negotiating (deprecated, non-functional)
                        flags: accès en lecture, accès en écriture, obsolète
                        Boolean. Default: false
  do-timestamp        : Apply current stream time to buffers
                        flags: accès en lecture, accès en écriture
                        Boolean. Default: false
  url                 : url page
                        flags: accès en lecture, accès en écriture
                        String. Default: null

Test pipeline

GST_DEBUG=*webkit*:5 gst-launch-1.0 webkitsrc url=http://localhost/news/ ! video/x-raw, format=RGBA, framerate=25/1, width=1280, height=720 ! videoconvert ! xvimagesink sync=FALSE

GST_DEBUG=*webkit*:5 gst-launch-1.0 webkitsrc url=http://localhost/test.html ! video/x-raw, format=RGBA, framerate=25/1, width=1280, height=720 ! videoconvert ! xvimagesink sync=FALSE

TODO

GST_DEBUG=*webkit*:5 gst-launch-1.0 videotestsrc ! video/x-raw, format=RGBA, width=1280, height=720 ! mixer.sink_0   webkitsrc  url="http://localhost/news/" ! video/x-raw, format=RGBA, width=1280, height=720 ! alpha method=green ! mixer.sink_1   videomixer name=mixer sink_0::zorder=0 sink_1::zorder=1 !   videoconvert ! autovideosink sync=FALSE

GST_DEBUG=webkit:5 gst-launch-1.0 videotestsrc ! video/x-raw, format=RGBA, width=1280, height=720 ! mixer.sink_1 webkitsrc url=”http://localhost/news/” ! video/x-raw, format=RGBA, width=1280, height=720 ! mixer.sink_0 videomixer name=mixer sink_0::zorder=1 sink_1::zorder=0 ! videoconvert ! autovideosink sync=FALSE

GST_DEBUG=webkit:5 gst-launch-1.0 videotestsrc ! video/x-raw, format=RGBA, width=1280, height=720 ! mixer.sink_1 webkitsrc url=”http://localhost/news/” ! video/x-raw, format=RGBA, width=1280, height=720 ! alpha method=green ! mixer.sink_0 videomixer name=mixer sink_0::zorder=0 sink_1::zorder=1 ! videoconvert ! autovideosink sync=FALSE