Página 1 de 1

Ayuda para terminar mi reproductor de música

NotaPublicado: 2009-06-04 12:43 @571
por BigBear
Hi!

Este es el code de mi programa player.pl

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#Name program = Player Music
#Autor = Guason
#Alias = Guason el malvado

use Win32::MediaPlayer;



 if(!$ARGV[0]) {

print "\n\n";
print "Player Music By Guason\n";
print "\n";
print "Modo de uso = player.pl <SONG>\n";
print "SONG = Puede ser una cancion o un video\n\n";
print "Written by Guason\n";
exit 1;
}

my $play = $ARGV[0];


$winmm = new Win32::MediaPlayer;  # new an object
    $winmm->load ($play) ;        # Load music file disk, or an URL
    $winmm->play;                     # Play the music
    $winmm->volume(100);              # Set volume after playing
    $winmm->seek('00:00');            # seek to

    #$winmm->pause;                   # Pause music playing
    #$winmm->resume;                  # Resume music playing

    print "\n";
    print 'Total Length : '.$winmm->length(1),$/; # Show total time.
    while(1) {
          sleep 9;
          print "\n";

          print 'Now Position: '.$winmm->pos(1)."\r";   # Show now time.
    };
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Este programa lo hice con la ayuda del módulo Win32::MediaPlayer y viendo el ejemplo de CPAN del mismo.

Pero... tengo un problema: yo quiero que reproduzca una lista de canciones MP3 que están en formato playlist.m3u.

El problema empieza cuando quiero reproducirlo ya que reproduce solo una y, francamente, necesito que reproduzca todas las canciones, o sea: termina una, empieza otra, etc...

Agradecería cualquier ayuda.

NotaPublicado: 2009-06-07 16:45 @739
por explorer
En CPAN hay algunos módulos que interpretan el contenido de los ficheros m3u...

NotaPublicado: 2009-06-09 17:37 @776
por BigBear
Grax, ya lo vi.

Estoy usando este: MP3::M3U.

Pero me da un error en el code:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  use MP3::M3U;
 use Win32::MediaPlayer;


  my $m3u = new MP3::M3U 'C:\playlist.m3u';
  my $files = $m3u->parse();

    $winmm = new Win32::MediaPlayer;
    $winmm->load ($files) ;
    $winmm->play;
    $winmm->volume(100);
    $winmm->seek('00:00');

    #$winmm->pause;
    #$winmm->resume;

    print 'Total Length : '.$winmm->length(1),$/;
    while(1) {

   sleep 1;
          print 'Now Position: '.$winmm->pos(1)."\r";   # Show now time.
    };
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Qué tengo que hacer para que funcione y las cargue?

NotaPublicado: 2009-06-09 18:49 @826
por explorer
No has entendido la forma en que te devuelve el resultado MP3::M3U. Te devuelve un escalar a una lista de valores. Así que debes recorrerles uno por uno.

Algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use MP3::M3U;
use Win32::MediaPlayer;

my $m3u = new MP3::M3U 'C:\playlist.m3u';
my $files = $m3u->parse();

foreach my $fichero (@$files) {

    $winmm = new Win32::MediaPlayer;
    $winmm->load ($fichero) ;
    $winmm->play;
    $winmm->volume(100);
#   $winmm->seek('00:00');

    #$winmm->pause;
    #$winmm->resume;

    print 'Total Length : '. $winmm->length(1) . $/;

    # length() nos devuelve la longitud en microsegundos
    # Esperamos la longitud de la canción más un par de segundos
    sleep 2 + $winmm->length / 1_000_000;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4