.


:




:

































 

 

 

 


MediaPlayer




MediaPlayer Delphi

 

50-201:

 

 

2016.

MediaPlayer

Delphi ( Delphi 2) MediaPlayer - -. - System .

- , (Play, Pause, Stop, Next, Previous, Step, Back, StartRecording, Eject). TMediaPlayer . .. , , , TButton .

- . , .

( ):

Play
Pause . - ,
Stop
Next
Prev
Step
Back
Record
Eject ,

 

- , : Play, Pause, Stop, Next, Previous, Step, Back, StartRecording, Eject.

, -, DeviceType. , FileName. DeviceType dtAutoSelect. , - FileName.

MediaPlayer AutoOpen. true, - , DeviceType, .

, . , Display , . , , . DisplayRect TRect ( ) , . DisplayRect Rect. , TRect . , , . , .

, :

MediaPlayer1.DisplayRect:= Rect(10, 10, 200, 200); -

 

(10, 10), , 200.

:

AutoEnable - Mode;

AutoOpen - - ;

AutoRewind - . AutoRewind true , Play StartRecording . AutoRewind false, Prev Previous. StartPos EndPos, , AutoRewind ;

Display - , ;

DisplayRect - , Display;

EnabledButtons - ;

FileName - , Open Save;

Position - TimeFormat. ;

VisibleButtons - , - . . , VisibleButtons TButtonSet, .

 

, , MediaPlayer , MediaPlayer, CD:

Length
Tracks
TrackLength
Position ( )
TimeFormat Length, TrackLength Position. tfMilliseconds
Mode . mpPlaying ; mpStopped ; mpPaused ; mpNotReady ; mpOpen (CD-) .
Display , . , ( )
DisplayRect

 

:

MediaPlayer .

Form1(Media WMV Player):

:

Media WMV Player:

DisplayPlayer: TPanel;

Panel1: Tpanel.

 

DisplayPlayer: TPanel :

MediaPlayer: TMediaPlayer;

OpenDialog: TOpenDialog;

Timer: TTimer;

TimerResize: TTimer;

Panel1: Tpanel :

Edit1: TEdit;

Label1: TLabel;

ProgressBar1: TProgressBar;

TrackBar1: TTrackBar;

PlayButton: TButton;

PauseButton: TButton;

StopButton: TButton;

OpenButton: TButton;

 

 

-:

1. .

, . OpenDialog;

2. . , , . PauseButton;

 

 

 

3. . PlayButton;

4. , . . StopButton;

 

Label1 () () ;

Edit1 ();

ProgressBar , , , . ( )

 

 

5. ProgressBar1

 

6. TrackBar1 .

TrackBar , . , - : , ..

 

 

 

:

- : wmv, mp4, avi;

- : wma, mp3.

avi mp4 DivX, Xvid, QuickTime, ( ).

, : mkv, m2ts, flac, Apple Lossless , Delphi.

 

:

unit MediaWMV;

 

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, MPlayer, StdCtrls, ComCtrls, mmsystem;

const

WMVOpenDialogTypes = 'Windows Media Files (WMV WMA MP3 WAV MP4 AVI MKV FlAC) |*.wmv;*.wma;*.mp3;*.wav;*.avi;*.mkv;*.flac;*.mp4';

b_time_rz = ':';

audio = 'Audio File';

 

const

MCI_SETAUDIO = $0873;

MCI_DGV_SETAUDIO_VOLUME = $4002;

MCI_DGV_SETAUDIO_ITEM = $00800000;

MCI_DGV_SETAUDIO_VALUE = $01000000;

MCI_DGV_STATUS_VOLUME = $4019;

 

type

 

MCI_DGV_SETAUDIO_PARMS = record

dwCallback: DWORD;

dwItem: DWORD;

dwValue: DWORD;

dwOver: DWORD;

lpstrAlgorithm: PChar;

lpstrQuality: PChar;

end;

 

MCI_STATUS_PARMS = record

dwCallback: DWORD;

dwReturn: DWORD;

dwItem: DWORD;

dwTrack: DWORD;

end;

 

TPanel = class (ExtCtrls.TPanel)

public

property Canvas;

end;

 

TWMVPlayer = class(TForm)

MediaPlayer: TMediaPlayer;

Panel1: TPanel;

DisplayPanel: TPanel;

ProgressBar1: TProgressBar;

Label1: TLabel;

PlayButton: TButton;

PauseButton: TButton;

StopButton: TButton;

OpenButton: TButton;

OpenDialog: TOpenDialog;

Timer: TTimer;

TimerResize: TTimer;

Edit1: TEdit;

TrackBar1: TTrackBar;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure TrackBar1Change(Sender: TObject);

procedure ProgressBar1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure StopButtonClick(Sender: TObject);

procedure TimerResizeTimer(Sender: TObject);

procedure FormResize(Sender: TObject);

procedure OpenButtonClick(Sender: TObject);

procedure PauseButtonClick(Sender: TObject);

procedure PlayButtonClick(Sender: TObject);

procedure TimerTimer(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

Loaded: boolean;

Played: boolean;

function Rvol: integer;

procedure Wvol(const Value: integer);

procedure Load(filename: string);

public

{ Public declarations }

procedure Play(filename:string = '');

procedure Pause;

function SecondsToTime(sec: double): String;

procedure Stop;

function GetAllPlayFiles(StartDir:string):TStringList;

// 0 - 1000;

property Volume: integer Read Rvol Write Wvol;

end;

 

var

WMVPlayer: TWMVPlayer;

 

function GetMPVolume(MP: TMediaPlayer): Integer;

procedure SetMPVolume(MP: TMediaPlayer; Volume: Integer);

 

 

implementation

 

{$R *.dfm}

 

procedure SetMPVolume(MP: TMediaPlayer; Volume: Integer);

var

p:MCI_DGV_SETAUDIO_PARMS;

begin

p.dwCallback:= 0;

p.dwItem:= MCI_DGV_SETAUDIO_VOLUME;

p.dwValue:= Volume;

p.dwOver:= 0;

p.lpstrAlgorithm:= nil;

p.lpstrQuality:= nil;

mciSendCommand(MP.DeviceID, MCI_SETAUDIO,

MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p));

end;

 

function GetMPVolume(MP: TMediaPlayer): Integer;

var

p: MCI_STATUS_PARMS;

begin

p.dwCallback:= 0;

p.dwItem:= MCI_DGV_STATUS_VOLUME;

mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p));

Result:= p.dwReturn;

{ Volume: 0 - 1000 }

end;

 

procedure TWMVPlayer.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Stop;

end;

 

procedure TWMVPlayer.FormCreate(Sender: TObject);

begin

Loaded:=false;

Played:=false;

OpenDialog.Filter:=WMVOpenDialogTypes;

DoubleBuffered:=true;

end;

 

procedure TWMVPlayer.FormResize(Sender: TObject);

begin

if Loaded then TimerResize.Enabled:=true;

end;

 

function TWMVPlayer.GetAllPlayFiles(StartDir: string): TStringList;

var

SearchRec: TSearchRec; ext: string;

begin

result:=TStringList.Create;

if StartDir[Length(StartDir)] <> '\' then

StartDir:= StartDir + '\';

if FindFirst(StartDir + '*.*', faAnyFile, SearchRec) = 0 then begin

repeat Application.ProcessMessages;

if ((SearchRec.Attr and faHidden) = faHidden) or ((SearchRec.Attr and faSysFile) = faSysFile) then Continue;

if (SearchRec.Attr and faDirectory) <> faDirectory then begin

// file

ext:=LowerCase(ExtractFileExt(SearchRec.Name));

if (pos('mp3',ext)>0) OR (pos('wav',ext)>0) OR (pos('wma',ext)>0) OR (pos('wmv',ext)>0) OR (pos('avi',ext)>0) OR (pos('mkv',ext)>0) then begin

// file ok

result.Add(SearchRec.Name)

end;

end;

until FindNext(SearchRec) <> 0;

end;

FindClose(SearchRec);

end;

 

procedure TWMVPlayer.Load(filename:string);

begin

Edit1.Text:='';

Played:=false;

if FileExists(FileName) then begin

MediaPlayer.FileName:=FileName;

MediaPlayer.Open;

Edit1.Text:=ExtractFileName(FileName);

if (LowerCase(ExtractFileExt(MediaPlayer.FileName)) = '.mp3') OR

(LowerCase(ExtractFileExt(MediaPlayer.FileName)) = '.wav') OR

(LowerCase(ExtractFileExt(MediaPlayer.FileName)) = '.wma')

then

DisplayPanel.Caption:=audio

else begin

DisplayPanel.Caption:='';

MediaPlayer.Display:=DisplayPanel;

end;

Loaded:=true;

TrackBar1.Position:=Round(Volume/100);

end else begin

ShowMessage('Media WMV Player - íåò ôàéëà äëÿ îòêðûòèÿ');

Loaded:=false;

Abort;

end;

end;

 

procedure TWMVPlayer.OpenButtonClick(Sender: TObject);

begin

if OpenDialog.Execute then begin

Play(OpenDialog.FileName);

end;

end;

 

procedure TWMVPlayer.Pause;

begin

Timer.Enabled:=false;

if (loaded) then begin

MediaPlayer.Pause;

Played:=not Played;

Timer.Enabled:=Played;

end;

end;

 

procedure TWMVPlayer.PauseButtonClick(Sender: TObject);

begin

//pause

Pause;

end;

 

procedure TWMVPlayer.Play(filename: string);

begin

if filename = '' then if loaded then begin

MediaPlayer.Play;

Played:=true;

Timer.Enabled:=true;

exit;

end;

if (loaded) AND (filename=MediaPlayer.FileName) then begin

MediaPlayer.Play;

Played:=true;

Timer.Enabled:=true;

exit;

end;

//MediaPlayer.FileName:=filename;

Load(filename);

MediaPlayer.Play;

Played:=true;

ProgressBar1.Max:=MediaPlayer.Length;

ProgressBar1.Position:=0;

Timer.Enabled:=true;

MediaPlayer.DisplayRect:=DisplayPanel.Canvas.ClipRect;

end;

 

procedure TWMVPlayer.PlayButtonClick(Sender: TObject);

begin

// play

Play;

end;

 

procedure TWMVPlayer.ProgressBar1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if not Loaded then exit;

if Button = mbLeft then begin

ProgressBar1.Position:=round(

(ProgressBar1.max/(ProgressBar1.Width-2))*X

);

MediaPlayer.Position:=ProgressBar1.Position;

if Played then MediaPlayer.Play;

end;

end;

 

 

function TWMVPlayer.Rvol: integer;

begin

result:=1000;

if Loaded then begin

result:=GetMPVolume(MediaPlayer);

end;

end;

 

function TWMVPlayer.SecondsToTime(sec: double): String;

var

M, S, H: INTEGER;

begin

S:= Round(Sec);

M:= Round(INT(S / 60));

S:= S - M * 60; //Seconds

H:= Round(INT(M / 60)); //Hours

M:= M - H * 60; //Minutes

if H=0 then result:='' else result:=inttostr(H)+b_time_rz;

if M<10 then result:=result+'0';

result:=result+inttostr(M)+b_time_rz;

if S<10 then result:=result+'0';

result:=result+inttostr(S);

end;

 

 

procedure TWMVPlayer.Stop;

begin

if loaded then begin

loaded:=false;

Played:=false;

MediaPlayer.Close;

Edit1.Text:='';

DisplayPanel.Caption:='';

end;

end;

 

procedure TWMVPlayer.StopButtonClick(Sender: TObject);

begin

Stop;

end;

 

procedure TWMVPlayer.TimerResizeTimer(Sender: TObject);

begin

MediaPlayer.DisplayRect:=Rect(0,0,DisplayPanel.Width-1,DisplayPanel.Height-1);

TimerResize.Enabled:=false;

end;

 

procedure TWMVPlayer.TimerTimer(Sender: TObject);

begin

if Loaded and Played then begin

ProgressBar1.Position:=MediaPlayer.Position;

Label1.Caption:=SecondsToTime(MediaPlayer.Position/1000) + ' / '+

SecondsToTime(ProgressBar1.max/1000);

if ProgressBar1.Position=ProgressBar1.Max then Played:=false;

end else begin

Timer.Enabled:=false;

ProgressBar1.Position:=0;

Label1.Caption:=SecondsToTime(0);

end;

end;

 

procedure TWMVPlayer.TrackBar1Change(Sender: TObject);

begin

Self.Volume:=TTrackBar(Sender).Position*100;

end;

 

procedure TWMVPlayer.Wvol(const Value: integer);

begin

if Loaded then SetMPVolume(MediaPlayer,value);

end;

 

end.





:


: 2017-02-11; !; : 1182 |


:

:

.
==> ...

1990 - | 1749 -


© 2015-2024 lektsii.org - -

: 0.17 .