#!/usr/bin/perl -w # launch a gst-launch pipeline for the supplied media file # use the extension to determine the gst-launch pipeline # make use of default output sinks ### packages use File::Basename; ### defaults my $VIDEOSINK = "xvideosink"; my $AUDIOSINK = "osssink"; my $GST_CVS_PATH = "~/gst/cvs"; my %pipes = ( "mp3", "mad ! $AUDIOSINK", "ogg", "vorbisdec ! $AUDIOSINK", "mpg", "mpegdemux video_00! { queue ! mpeg2dec ! $VIDEOSINK } audio_00! { queue ! mad ! $AUDIOSINK }", "avi", "avidemux video_00! { queue ! windec ! $VIDEOSINK }", "vob", "mpegdemux video_00! { queue ! mpeg2dec ! $VIDEOSINK }", ); sub extension { my $path = shift; my $ext = (fileparse ($path, '\..*'))[2]; $ext =~ s/^\.//; return $ext; } ### main my $file = shift @ARGV or die "Please give a file name !"; my $ext = extension ($file); if ($pipe = $pipes{$ext}) { $command = "$GST_CVS_PATH/gstreamer/tools/gst-launch filesrc location=\"$file\" ! $pipe"; print "Running $command\n"; system ($command); } else { print "No suitable pipe found for extension $ext.\n"; }