Moduł Win32::Mediaplayer

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Spis treści

  1. Co to jest
  2. Metody
  3. Dlaczego
  4. Epilog

Co to jest

Doskonały przykład niedocenionego przez samego twórcę modułu.

Napisany przez niejakiego Lilo Huwang'a (pierwszy z lewej na zdjęciu poniżej):

Zdjęcie Lilo Zdjęcie autora modułu, Lilo (z lewej)
Cytując oryginalnego POD'a "This module allows playing of sound format like MP3 / WMA / WAV / MIDI on Win32 platforms using the MCI interface (which depends on winmm.dll)." Słowem powinniśmy za jego pomocą poradzić sobie z otwarciem najpopularniejszych (może poza ogg'iem) formatów plików muzycznych. Otóż eksperymentując z modułem (nie wprowadzałem do niego jakichkolwiek zmian) udało mi się również otworzyć każdy z rozpoznawanych przez mój system formatów wideo.

Metody

new
Jak powinna sugerować nazwa jest to konstruktor, który zajmuje się połączeniem z interfejsem MCI systemu Windows
load()
Ładuje multimedia z dysku lub wskazanej lokalizacji internetowej
play
Odtwarza załadowany plik z multimediami
seek(wartość)
"wartość" powinna być liczbą naturalną oznaczającą ilość mikrosekund, na którą mamy się przesunąć lub napisem postaci XX:YY gdzie XX oznacza minuty a YY sekundy
close
Zamyka otwarty plik z multimediami
volume(wartość)
Możliwe wartości są liczbami z przedziału od 0 do 100 (domkniętego)
length(argument)
W momencie gdy argument jest liczbą jeden zwracana jest długość materiału w formacie XX:YY gdy brak parametru przy wywołaniu podany zostaje czas w milisekundach
pos(argument)
Zwraca aktualną pozycję odtwarzanego pliku. Podobnie jak funkcja length w zależności od argumentu możemy otrzymać tą wartość na dwa sposoby
pause
Zatrzymuje odtwarzanie aż do wywołania:
resume
Wznawia odtwarzanie od momentu, w którym dokonano jego zatrzymania

Dlaczego wybrałem ten moduł

  1. Można odtwarzać pliki muzyczne i filmowe z sieci. Nie jest wtedy wymagane pobranie takowego na dysk twardy lub czekanie, aż cały znajdzie się w pamięci operacyjnej. Serwer nie musi mieć zainstalowanego oprogramowania umożliwiającego jego użytkownikom odtwarzanie strumieniowe. Wystarczy umieszczenie pliku w folderze dostępnym dla wszystkich użytkowników sieci i gotowe. Demo: use Win32::MediaPlayer; $winmm = new Win32::MediaPlayer; $winmm->load('http://manta.univ.gda.pl/~twojtowi/02%20-%20Dies%20Irae.mp3'); $winmm->play; $winmm->volume(100); while(1==1) { print 'Trwa odtwarzanie: '.$winmm->pos(1)."\r"; }; Można w ten sposób posłuchać choćby nagrania z reklamy, które umieściłem u siebie na mancie, z jakiej? - to już pozostawiam wszystkim chętnym, którzy uruchomią powyższy kod u siebie.
  2. Teraz mogę bezpiecznie pobierać filmy z internetu. Już po pobraniu kawałka już mogę go uruchomić przy pomocy modułu i sprawdzić czy jest to właściwy materiał, ocenić jego jakość i zawartość. Zupełnie nieprzydatny staje się w tym momencie DivFix bodaj najpopularniejszy program perlowy wykorzystywany pod Windows.
  3. Zupełnie unikalną funkcją jest odtwarzanie dwóch lub więcej plików z multimediami jednocześnie. Żaden ze znanych mi odtwarzaczy nie potrafi poradzić sobie z wyświetleniem w dwóch oknach obok siebie różnych materiałów. Można tego dokonać stosując dwa różne odtwarzacze ale wtedy nie da się np. wyciszyć jednego źródła i pozostawić tylko drugiego. Mamy globalne sterowanie głośnością. Opisywany moduł ma możliwość otwarcia tak wielu okien na ile pozwala pamięć operacyjna komputera. Każde ze źródeł dysponuje własną kontrolą głośności itp. Można otworzyć film z angielską ścieżką dźwiękową i jednocześnie mp3 z polską, której głośność ustawiamy na 100. Każdy z materiałów można indywidualnie przewijać itd. Demo przedstawia kod, który wykorzystałem do otwarcia dwóch okien z kompilacjami yourii'ego z Gdańska: use Win32::MediaPlayer; $winmm = new Win32::MediaPlayer; $winmm->load('N:/Videos/Final Fantasy/yourii - wideo/Final Fantasy X, X-2 Koda Kumi - One.wmv'); $winmm->play; $winmm->volume(100); $winmm2 = new Win32::MediaPlayer; $winmm2->load('N:/Videos/Final Fantasy/yourii - wideo/Final Fantasy X, X-2 Farba.wmv'); $winmm2->play; $winmm2->volume(0); while(1==1) { print 'Trwa odtwarzanie: '.$winmm->pos(1)."\r"; }; (Uwaga! Można używać w lokalizacji zarówno "/" (styl UNIX) jak i "\" (Windows))

Epilog

Moduł stanowi niezły punkt startowy dla implementacji prawdziwego odtwarzacza multimedialnego na platformę Windows z pewną ilością unikalnych funkcji, o których pisałem wyżej. np. pasek postępu można zaimplementować jedną linijką kodu: use Win32::MediaPlayer; $winmm = new Win32::MediaPlayer; $winmm->load('N:\My Documents\My Music\09_basshunter_-_boten_anna_-_www.torrentazos.com.mp3'); $winmm->play; $winmm->volume(100); while(1==1) { print 'Trwa odtwarzanie: '.'#'x(100*$winmm->pos()/$winmm->length())."\r"; };

Dodatkowe informacje

Kontakt i informacje o autorze opracowania

Autor: Tomasz Wojtowicz

Email: wojtowiczt@wp.pl

Numer GG: Słoneczko 3680301

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.