Add support for multiple files on command line, and .m3u playlists (assuming format of .m3u playlist is simply a list...
Original commit message from CVS: Add support for multiple files on command line, and .m3u playlists (assuming format of .m3u playlist is simply a list of filenames, one per line. Comments will probably work, because the file won't be found. ;-> ) Needs to have support for ctrl-c added, so that play can be aborted without going through whole list of files.
This commit is contained in:
parent
1c6b00f624
commit
fc665b84c7
@ -9,6 +9,7 @@
|
|||||||
use File::Basename;
|
use File::Basename;
|
||||||
|
|
||||||
|
|
||||||
|
my %pipes;
|
||||||
|
|
||||||
sub extension
|
sub extension
|
||||||
{
|
{
|
||||||
@ -51,11 +52,28 @@ sub read_config
|
|||||||
if (!defined $cfg{CVS_PATH}) { $cfg{CVS_PATH} = `echo -n ~`."/gst/cvs"; }
|
if (!defined $cfg{CVS_PATH}) { $cfg{CVS_PATH} = `echo -n ~`."/gst/cvs"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub playfile($$)
|
||||||
|
{
|
||||||
|
my ($file, $ext) = @_;
|
||||||
|
|
||||||
|
my $pipe;
|
||||||
|
if ($pipe = $pipes{$ext})
|
||||||
|
{
|
||||||
|
$command = "gst-launch filesrc location=\"$file\" ! $pipe";
|
||||||
|
print "Running $command\n";
|
||||||
|
system ("PATH=\$PATH:".$cfg{CVS_PATH}."/gstreamer/tools $command");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print "No suitable pipe found for extension $ext.\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### main
|
### main
|
||||||
|
|
||||||
read_config ();
|
read_config ();
|
||||||
|
|
||||||
my %pipes = (
|
%pipes = (
|
||||||
"mp3", "mad ! $cfg{AUDIOSINK}",
|
"mp3", "mad ! $cfg{AUDIOSINK}",
|
||||||
"ogg", "vorbisdec ! $cfg{AUDIOSINK}",
|
"ogg", "vorbisdec ! $cfg{AUDIOSINK}",
|
||||||
"mpg", "mpegdemux video_00! { queue ! mpeg2dec ! $cfg{VIDEOSINK} } mpegdemux0.audio_00! { queue ! mad ! $cfg{AUDIOSINK} }",
|
"mpg", "mpegdemux video_00! { queue ! mpeg2dec ! $cfg{VIDEOSINK} } mpegdemux0.audio_00! { queue ! mad ! $cfg{AUDIOSINK} }",
|
||||||
@ -64,17 +82,26 @@ my %pipes = (
|
|||||||
"wav", "wavparse ! $cfg{AUDIOSINK}",
|
"wav", "wavparse ! $cfg{AUDIOSINK}",
|
||||||
|
|
||||||
);
|
);
|
||||||
my $file = shift @ARGV or die "Please give a file name !";
|
|
||||||
|
|
||||||
my $ext = extension ($file);
|
if ($#ARGV == -1) {
|
||||||
|
print STDERR "Usage: gst-launch-ext filename[s]\n";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
if ($pipe = $pipes{$ext})
|
my $file;
|
||||||
{
|
while ($file = shift @ARGV) {
|
||||||
$command = "gst-launch filesrc location=\"$file\" ! $pipe";
|
my $ext = extension ($file);
|
||||||
print "Running $command\n";
|
if ($ext eq 'm3u')
|
||||||
system ("PATH=\$PATH:".$cfg{CVS_PATH}."/gstreamer/tools $command");
|
{
|
||||||
}
|
open (PLAYLIST, '<', $file);
|
||||||
else
|
my $file2;
|
||||||
{
|
while ($file2 = <PLAYLIST>) {
|
||||||
print "No suitable pipe found for extension $ext.\n";
|
chomp $file2;
|
||||||
|
my $ext2 = extension ($file2);
|
||||||
|
playfile($file2, $ext2);
|
||||||
|
}
|
||||||
|
close PLAYLIST;
|
||||||
|
} else {
|
||||||
|
playfile($file, $ext);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user