mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
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
1 changed files with 39 additions and 12 deletions
|
@ -9,6 +9,7 @@
|
|||
use File::Basename;
|
||||
|
||||
|
||||
my %pipes;
|
||||
|
||||
sub extension
|
||||
{
|
||||
|
@ -51,11 +52,28 @@ sub read_config
|
|||
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
|
||||
|
||||
read_config ();
|
||||
|
||||
my %pipes = (
|
||||
%pipes = (
|
||||
"mp3", "mad ! $cfg{AUDIOSINK}",
|
||||
"ogg", "vorbisdec ! $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}",
|
||||
|
||||
);
|
||||
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})
|
||||
{
|
||||
$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";
|
||||
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…
Reference in a new issue