Skip to content

Instantly share code, notes, and snippets.

@markwingerd
Last active August 29, 2015 14:10
Show Gist options
  • Save markwingerd/4150d1cbb49036da2eb4 to your computer and use it in GitHub Desktop.
Save markwingerd/4150d1cbb49036da2eb4 to your computer and use it in GitHub Desktop.
GStreamer Tutorial 3: Part 1/4 - Streams and splits multimedia using Playbin2
import gst
# Create the pipeline and bin
output_bin = gst.Bin('output_bin')
# Create the elements.
media_source = gst.element_factory_make('playbin2', 'media_source')
decode = gst.element_factory_make('decodebin', 'decode')
convert = gst.element_factory_make('audioconvert', 'convert')
tee = gst.element_factory_make('tee', 'tee')
audio_queue = gst.element_factory_make('queue', 'audio_queue')
audio_sink = gst.element_factory_make('autoaudiosink', 'audio_sink')
wavescope_queue = gst.element_factory_make('queue', 'wavescope_queue')
wavescope_visual = gst.element_factory_make('wavescope', 'wavescope_visual')
wavescope_convert = gst.element_factory_make('ffmpegcolorspace', 'wavescope_convert')
wavescope_sink = gst.element_factory_make('autovideosink', 'wavescope_sink')
file_queue = gst.element_factory_make('queue', 'file_queue')
file_encode = gst.element_factory_make('lamemp3enc', 'file_encode')
file_sink = gst.element_factory_make('filesink', 'file_sink')
# Ensure all elements were created successfully.
if (not output_bin or not media_source or not decode or not convert or
not tee or not audio_queue or not audio_sink or not wavescope_queue or
not wavescope_visual or not wavescope_convert or not wavescope_sink or
not file_queue or not file_encode or not file_sink):
print 'Elements could not be linked.'
exit(-1)
# Configure our elements.
#media_source.set_property('uri', 'file:///home/reimus/Public/sintel_trailer-480p.webm')
media_source.set_property('uri', 'http://docs.gstreamer.com/media/sintel_trailer-480p.webm')
wavescope_visual.set_property('shader', 0)
wavescope_visual.set_property('style', 3)
file_sink.set_property('location', 'myaudio.mp3')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment