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
f847cc21c8
commit
911f9b4d53
@ -9,6 +9,7 @@
|
|||||||
use File::Basename;
|
use File::Basename;
|
||||||
|
|
||||||
|
|
||||||
|
my %pipes;
|
||||||
|
|
||||||
sub extension
|
sub extension
|
||||||
{
|
{
|
||||||
@ -51,23 +52,11 @@ 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"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
### main
|
sub playfile($$)
|
||||||
|
{
|
||||||
read_config ();
|
my ($file, $ext) = @_;
|
||||||
|
|
||||||
my %pipes = (
|
|
||||||
"mp3", "mad ! $cfg{AUDIOSINK}",
|
|
||||||
"ogg", "vorbisdec ! $cfg{AUDIOSINK}",
|
|
||||||
"mpg", "mpegdemux video_00! { queue ! mpeg2dec ! $cfg{VIDEOSINK} } mpegdemux0.audio_00! { queue ! mad ! $cfg{AUDIOSINK} }",
|
|
||||||
"avi", "avidemux video_00! { queue ! windec ! $cfg{VIDEOSINK} }",
|
|
||||||
"vob", "mpegdemux video_00! { queue ! mpeg2dec ! $cfg{VIDEOSINK} } mpegdemux0.audio_00! { queue ! a52dec ! $cfg{AUDIOSINK} }",
|
|
||||||
"wav", "wavparse ! $cfg{AUDIOSINK}",
|
|
||||||
|
|
||||||
);
|
|
||||||
my $file = shift @ARGV or die "Please give a file name !";
|
|
||||||
|
|
||||||
my $ext = extension ($file);
|
|
||||||
|
|
||||||
|
my $pipe;
|
||||||
if ($pipe = $pipes{$ext})
|
if ($pipe = $pipes{$ext})
|
||||||
{
|
{
|
||||||
$command = "gst-launch filesrc location=\"$file\" ! $pipe";
|
$command = "gst-launch filesrc location=\"$file\" ! $pipe";
|
||||||
@ -78,3 +67,41 @@ else
|
|||||||
{
|
{
|
||||||
print "No suitable pipe found for extension $ext.\n";
|
print "No suitable pipe found for extension $ext.\n";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
### main
|
||||||
|
|
||||||
|
read_config ();
|
||||||
|
|
||||||
|
%pipes = (
|
||||||
|
"mp3", "mad ! $cfg{AUDIOSINK}",
|
||||||
|
"ogg", "vorbisdec ! $cfg{AUDIOSINK}",
|
||||||
|
"mpg", "mpegdemux video_00! { queue ! mpeg2dec ! $cfg{VIDEOSINK} } mpegdemux0.audio_00! { queue ! mad ! $cfg{AUDIOSINK} }",
|
||||||
|
"avi", "avidemux video_00! { queue ! windec ! $cfg{VIDEOSINK} }",
|
||||||
|
"vob", "mpegdemux video_00! { queue ! mpeg2dec ! $cfg{VIDEOSINK} } mpegdemux0.audio_00! { queue ! a52dec ! $cfg{AUDIOSINK} }",
|
||||||
|
"wav", "wavparse ! $cfg{AUDIOSINK}",
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($#ARGV == -1) {
|
||||||
|
print STDERR "Usage: gst-launch-ext filename[s]\n";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $file;
|
||||||
|
while ($file = shift @ARGV) {
|
||||||
|
my $ext = extension ($file);
|
||||||
|
if ($ext eq 'm3u')
|
||||||
|
{
|
||||||
|
open (PLAYLIST, '<', $file);
|
||||||
|
my $file2;
|
||||||
|
while ($file2 = <PLAYLIST>) {
|
||||||
|
chomp $file2;
|
||||||
|
my $ext2 = extension ($file2);
|
||||||
|
playfile($file2, $ext2);
|
||||||
|
}
|
||||||
|
close PLAYLIST;
|
||||||
|
} else {
|
||||||
|
playfile($file, $ext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user