Programowanie w języku Delphi » Gotowce

Prosty Odtwarzacz mp3

  • 2009-12-26 10:19
  • 8 komentarzy
  • 2857 odsłon
  • Oceń ten tekst jako pierwszy

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


</font>




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

mati66688 2010-04-21 11:35

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

Scoti 2010-02-02 01:04

Zrobiłem tutaj swój odtwarzacz na innym kodzie. Myślę że się spodoba :) http://www.sendspace.pl/file/414d462341bc7cfbdea0622

pawel8115 2009-12-26 10:16

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ć.

fatalbomb 2009-12-25 22:14

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.

Scoti 2010-02-04 16:24

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

mgx8 2009-02-26 14:48

OpenDialog1.Execute; // otwiera okno wyboru
if OpenDialog1.FileName <> '' then

Optymalnie bardziej by było napisać
if OpenDialog1.Execute niż sprawdzać FileName;)

pawel8115 2009-02-20 20:38

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

hazor 2009-02-20 13:13

To jest na silniku WMP???

PS. Cały kod bardzo się różni od tamtych części :D