Prosty Odtwarzacz mp3
Witam piszę tutaj pierwszy raz.Teraz zademonstruje wam jak można szybko zrobić swój własny odtwarzacz muzyki, za pomocą podstawowych komponentów
Jestem początkującym programistą i myślę że niektórym taki kod może się przydać.
1.Tworzymy nową aplikację .
2.Na formę wstawiamy 3 TSpeedButtony , TScrollBara , z zakładki Dialogs wstawiamy TopenDialog, wstawiamy jeszcze TMediaPlayer (można też wstawić TStatuss bara).
3.Teraz w:
a)speed buttonie 1 w caption wpisujemy otwórz. i ustawiamy Flat na True
b)speed buttonie 2 w caption wpisujemy Play i ustawiamy Flat na True
c)speed buttonie 3 w caption wpisujemy Pause i ustawiamy Flat na True
d)scroll baru ustawiamy Max na 127.
4.Wstawiamy kod:(dwa razy klikamy na speed buttona
A) Speed button 1:
procedure TForm1.SpeedButton1Click(Sender: TObject); begin if OpenDialog1.Execute then begin // otwiera okno wyboru MediaPlayer1.DeviceType := dtAutoSelect; // auto. odtwarzanie MediaPlayer1.FileName := OpenDialog1.FileName; MediaPlayer1.Open; ScrollBar1.Max := MediaPlayer1.Length; ScrollBar1.Position := MediaPlayer1.Position; MediaPlayer1.Play; end; end;
B) Speed button 2
procedure TForm1.SpeedButton2Click(Sender: TObject); begin MediaPlayer1.Play end;
C) Speed button 3
procedure TForm1.SpeedButton3Click(Sender: TObject); begin MediaPlayer1.Pause end;
cały kod wygląda tak
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, Menus, MPlayer,MMSystem, StdCtrls, ExtCtrls, Buttons; type TForm1 = class(TForm) SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; StatusBar1: TStatusBar; ScrollBar1: TScrollBar; MediaPlayer1: TMediaPlayer; OpenDialog1: TOpenDialog; procedure ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure ScrollBar1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} // Zmiana głośności dźwięku typu Wave procedure SetWavVolume(Lewy,Prawy:Byte); begin waveOutSetVolume(WAVE_MAPPER, Integer((Lewy shl 24) or (Prawy shl 8 ))); end; // Zmiana głośności muzyki z płyt CD procedure SetCDVolume(Lewy,Prawy:Byte); begin auxSetVolume(0, Integer((Lewy shl 24) or (Prawy shl 8 ))); end; procedure TForm1.ScrollBar1Change(Sender: TObject); begin // Zmiana głośności dla normalnych plików dźwiękowych (WAV lub Mp3) SetWavVolume(ScrollBar1.Position,ScrollBar1.Position); // Zmiana głośności dla muzyki odtwarzanej z płyt CD SetCDVolume(ScrollBar1.Position,ScrollBar1.Position); end; procedure TForm1.ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); begin ScrollBar1.Max := MediaPlayer1.Length; MediaPlayer1.Position := ScrollBar1.Position; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin OpenDialog1.Execute; // otwiera okno wyboru if OpenDialog1.FileName <> '' then Begin MediaPlayer1.DeviceType := dtAutoSelect; // auto. odtwarzanie MediaPlayer1.FileName := OpenDialog1.FileName; MediaPlayer1.Open; ScrollBar1.Max := MediaPlayer1.Length; ScrollBar1.Position := MediaPlayer1.Position; MediaPlayer1.Play; end; end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin MediaPlayer1.Play end; procedure TForm1.SpeedButton3Click(Sender: TObject); begin MediaPlayer1.Pause end; end.
W razie jakichkolwiek pytań pytań proszę o kontakt na gg: 4946688
Proszę też o wasze opinie
8 komentarzy
Zrobiłem tutaj swój odtwarzacz na innym kodzie. Myślę że się spodoba :) http://www.sendspace.pl/file/414d462341bc7cfbdea0622
fatalbomb masz rację w 100%, pisząc ten gotowiec myślałem o jego prostocie oraz użyciu podstawowych komponentów , ma on wiele wad ale dla początkujących to powinno wystarczyć.
Komponentu TMediaPlayer używałem dość długo, aczkolwiek on ma sporo wad (błędne podawanie czasu dla MP3 ze zmiennym bitrate, ociężałość, spotkałem też się z dziwnym wywalaniem się programu przy niektórych plikach MP3). Zaletą tego rozwiązania jest szybkość powstawania aplikacji (przy szybkich palcach w 3 minuty), tym niemniej na dłuższą metę radziłbym przesiąść się na bibliotekę BASS czy coś podobnego.
OpenDialog1.Execute; // otwiera okno wyboru
if OpenDialog1.FileName <> '' then
Optymalnie bardziej by było napisać
if OpenDialog1.Execute niż sprawdzać FileName;)
To nie jest na silniku WMP . Komponent TMedia Player ma swój silnik
PS.Poprawiony tylko dźwięk trzeba ustawić(ustawienie jest w kodzie źródłowym) polecam skopiowanie kodu źródłowego a potem dostosowanie go do swoich potrzeb
To jest na silniku WMP???
PS. Cały kod bardzo się różni od tamtych części :D
Ja również napisałem sobie własny odtwarzacz używając komponentów Mediaplayer listbox itd. Odtwarzacz posiada playlistę jak i opcje repear,playy all, random.
Mam tylko problem z przerobieniem ilości klatek na czas (min:sek) dla tego zostawiłem klatki. Co do repeat, play all i random, repeat samo będzie odtwarzało 1 utwór, play all będzie leciało od wybranego do ostatniego utworu, random + play all będzie skakał po liście i robił sam pereat. Repeat + play all chyba wiadomo ;) :P
to teraz dodam tylko link do programu i mam nadzieje że się spodoba
http://w373.wrzuta.pl/plik/56YmfaVfVPY/odtwarzacz