[gst-devel] Compositing and GStreamer

Timothy Braun braunsquared at gmail.com
Thu Nov 25 17:17:22 CET 2010


Hello Everyone,
  I'm fairly new to G-Streamer so any input you can provide is much
appreciated.  I'm working on a project where we need to generate a 2 minute
video which is a composite of a total of 24 input videos.  The output video
will have 4 different 30 second sections, each containing a 3x2 grid of the
smaller input videos.  The input videos are all naturally at 240x240 with
the goal of having a final output frame size of 720x480.

  Using gst-launch, I've been able to construct a sample 30 second clip
using a combination of inputs, videoboxes and a videomixer.  Here is what
I've come up with so far:

videomixer name=mix ! ffmpegcolorspace ! ffenc_mpeg1video ! ffmux_mpeg
name=mux ! queue ! filesink location=output.mpg
adder name=adder ! audioconvert ! ffenc_mp2 ! mux.
filesrc location=loop1.mp4 ! decodebin name=decode1
decode1. ! videobox border-alpha=0 top=-240 left=0 ! queue ! mix.
decode1. ! adder.
filesrc location=loop2.mp4 ! decodebin name=decode2
decode2. ! videobox border-alpha=0 top=-240 left=-240 ! queue ! mix.
decode2. ! adder.
filesrc location=loop3.mp4 ! decodebin name=decode3
decode3. ! videobox border-alpha=0 top=-240 left=-480 ! queue ! mix.
decode3. ! adder.
filesrc location=loop4.mp4 ! decodebin name=decode4
decode4. ! videobox border-alpha=0 top=0 left=0 ! queue ! mix.
decode4. ! adder.
filesrc location=loop5.mp4 ! decodebin name=decode5
decode5. ! videobox border-alpha=0 top=0 left=-240 ! queue ! mix.
decode5. ! adder.
filesrc location=loop6.mp4 ! decodebin name=decode6
decode6. ! videobox border-alpha=0 top=0 left=-480 ! queue ! mix.
decode6. ! adder.

  Now I need to do this 4 times, each time with a potentially different
video in each box.  I've started looking into C interfaces as there's other
pieces of the puzzle which need to be tied into this, and I am trying to
determine the best way to tackle this.  I originally was looking at Gnonlin,
but the documentation is lacking in regards to how gnloperations work.  I
also recently stumbled upon the GES library by Edward Hervey, this looks
promising as well, but I haven't been able to spend much time on it.

  If I go the Gnonlin route, I believe I would need 6 compositions, one for
each box.  At the 30 second marker, I would swap the filesource to a new one
using dynamic pads and listening for messages on the pipeline bus.  Am I far
off on this?  Any suggestions?

  As for the GES library, it looks very promising and powerful from the
little I read on it.  Would this be the smarter route to take?  If so, does
anyone have any suggestions for how the pipeline would be structured?

  Thank you in advance for your time on this and I truly appreciate any
information you are willing to share with me.

  Happy Thanksgiving,
  Tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20101125/e9f2eecc/attachment.htm>


More information about the gstreamer-devel mailing list