wiki:Yocto/gstreamer/multimedia

Version 1 (modified by trac, 6 months ago) (diff)

--

Video and Audio

Playback of combined video and audio is a bit more complicated as now you need to utilize parsers, named elements to split the audio and video paths, and queues to avoid single-threaded blocking.

The following pipeline examples utilize plugins from the the Freescale gst-fsl-plugin package on GStreamer 0.10.

gst-fsl-plugin elements used:

  • Parsers / Demuxers:
    • aiurdemux - parse and identify source stream formats

Example using Big Buck Bunney H.264 (MOV H264 video, AAC suuround sound):

gst-launch filesrc location=/media/sda1/big_buck_bunny_1080p_h264.mov typefind=true ! aiurdemux name=d ! \
  queue2 ! beepdec ! alsasink d. ! \
  queue2 ! vpudec ! mfw_v4lsink device=/dev/video16

GStreamer playbin2 and decodebin2 elements

GStreamer has some bin elements that try to 'autoplug' other elements together by inspecting the pipeline.

The decodebin2 element will try to figure out the proper decoder pipeline for the sink specified:

gst-launch filesrc location=/media/sda1/big_buck_bunny_720p_surround.avi ! \
  decodebin2 ! mfw_v4lsink device=/dev/video16

There is also playbin2 which just needs to be given a source and a sink

gst-launch playbin2 uri=file:///home/root/hawaii.mp4 \
  video-sink="mfw_v4lsink device=/dev/video16"

Note that these 'bin' elements may not always do what you want or expect (they may not use hardware decode for example).

Freescale gplay

Or if simplicity is required, the Freescale GStreamer based gplay app will try to determine the file type and play it back as best as it can.

gplay /media/sda1/big_buck_bunny.mov