mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-10 11:29:55 +00:00
2a5029145e
Original commit message from CVS: start of a gst-launch helper based on extension
48 lines
1.1 KiB
Perl
Executable file
48 lines
1.1 KiB
Perl
Executable file
#!/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";
|
|
}
|