| Win32-MediaPlayer documentation | Contained in the Win32-MediaPlayer distribution. |
Win32::MediaPlayer - Module for playing sound MP3 / WMA / WAV / MIDI file on Win32 platforms
use Win32::MediaPlayer;
$winmm = new Win32::MediaPlayer; # new an object
$winmm->load('d:/10.mp3'); # Load music file disk, or an URL
$winmm->play; # Play the music
$winmm->volume(100); # Set volume after playing
$winmm->seek('00:32'); # seek to
#$winmm->pause; # Pause music playing
#$winmm->resume; # Resume music playing
print 'Total Length : '.$winmm->length(1),$/; # Show total time.
while(1) {
sleep 1;
print 'Now Position: '.$winmm->pos(1)."\r"; # Show now time.
};
This module allows playing of sound format like MP3 / WMA / WAV / MIDI on Win32 platforms using the MCI interface (which depends on winmm.dll).
Only working on Win32, and you should installed the Win32::API
if not you can install by ppm, in the console mode
type command:
ppm install http://www.bribes.org/perl/ppm/Win32-API.ppd
The new method is the constructor. It will build a connection to the mci interface.
$winmm = new Win32::MediaPlayer; # new an object
$winmm->load('d:/10.mp3'); # Load music from the disk, or Internet URL.
$winmm->play; # Play the music file.
The value should be a format like XX:XX, or you can fill the micro second integer of the music.
$winmm->seek(100000); # Seek the music file, at the 100 sec pos.
$winmm->seek('01:40'); # Seek the music file, at the 01 min 40 sec pos.
$winmm->close; # Close the music file.
The value is from 0 to 100
$winmm->volume(100); # Set volume to 100 after playing
Return the music total length
$length = $winmm->length(1); # Return the length in XX:XX format.
$length = $winmm->length; # Return the length in micro second integer.
Return the music now position
$length = $winmm->pos(1); # Return the Position in XX:XX format.
$length = $winmm->pos; # Return the Position in micro second integer.
Pause the music play
$length = $winmm->pause; # Pause the music play.
Resume the music play
$length = $winmm->resume; # Resume the music play.
Lilo Huang
Copyright 2006 by Lilo Huang All Rights Reserved.
You can use this module under the same terms as Perl itself.
| Win32-MediaPlayer documentation | Contained in the Win32-MediaPlayer distribution. |
package Win32::MediaPlayer; use strict; use warnings; use vars qw($VERSION $self $mciSendString $result); use Win32::API; $VERSION = '0.3'; BEGIN { $mciSendString = new Win32::API( "winmm", "mciSendString", ['P', 'P', 'N', 'N'], 'N' )|| die "Can't register mciSendString"; } sub new { my $self = {}; bless $self, $_[0]; $self->{alias} = rand; $self->{pos} = 0; $self->{play} = 0; return $self; } sub load { my $self = shift; my $file = shift; $result = doMM("open \"$file\" type mpegvideo alias ".$self->{alias}); return $result; } sub play { my $self = shift; my $pos = shift || $self->{pos}; $self->{play} = 1; $result = doMM("play ".$self->{alias}." from $pos"); return $result; } sub volume { my $self = shift; warn 'No File Loaded' if($self->{play}==0); my $vol = shift; if($vol ne '') { $vol*=10; $result = doMM("setaudio ".$self->{alias}." volume to $vol"); return $result; }else{ return 'Null'; } } sub length { my $self = shift; my $flag = shift; warn 'No File Loaded' if($self->{play}==0); $result = doMM("status ".$self->{alias}." length"); if($flag) { my @time = localtime(int($result/1000)); $result = sprintf("%02d:%02d",$time[1],$time[0]); } return $result; } sub seek { my $self = shift; warn 'No File Loaded' if($self->{play}==0); my $seektime = shift; if($seektime=~/(\d{2}):(\d{2})/) { $seektime = ($1*60+$2)*1000; doMM("stop audiofile"); $result = doMM("play ".$self->{alias}." from $seektime"); }else{ doMM("stop audiofile"); $result = doMM("play ".$self->{alias}." from $seektime"); } return $result; } sub pos { my $self = shift; my $flag = shift; warn 'No File Loaded' if($self->{play}==0); $result = doMM("status ".$self->{alias}." position"); if($flag) { my @time = localtime(int($result/1000)); $result = sprintf("%02d:%02d",$time[1],$time[0]); } return $result; } sub pause { my $self = shift; warn 'No File Loaded' if($self->{play}==0); $result = doMM("pause ".$self->{alias}); return $result; } sub resume { my $self = shift; warn 'No File Loaded' if($self->{play}==0); $result = doMM("resume ".$self->{alias}); return $result; } sub close { my $self = shift; $self->{play} = 0; $result = doMM("close ".$self->{alias}); return $result; } sub doMM { my($cmd) = @_; my $ret = "\0" x 1025; my $rc = $mciSendString->Call($cmd, $ret, 1024, 0); if($rc == 0) { $ret =~ s/\0*$//; return $ret; }else{ return "error '$cmd': $rc"; } }
__END__ 1;