Prosty Odtwarzacz mp3

pawel8115

<font color="red">

Witam piszę tutaj pierwszy raz.Teraz zademonstruje wam jak można szybko zrobić swój własny odtwarzacz muzyki, za pomocą podstawowych komponentów


</span></p>

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

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

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.

Potrzebuję kodu na listę odtwarzania muzyki. Z góry dziękuje.

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