Witam,
Proszę o pomoc jak przechwycić (odczytać) w komponencie MediaPlayer, że utwór się już skończył.
Dziękuję za pomoc.
Witam,
Proszę o pomoc jak przechwycić (odczytać) w komponencie MediaPlayer, że utwór się już skończył.
Dziękuję za pomoc.
Proponuję skorzystać z biblioteki bass.dll ze strony https://www.un4seen.com/, gdyż komponent MediaPlayer został stworzony co do zasady dla plików typu *.wav i możesz mieć problem z odtwarzaniem innych rozszerzeń muzycznych, *.mp3 również odtworzy w zależności od bitrate. Jeśli chodzi o bass.dll sama biblioteka jest prosta w obsłudze. Na tej stronie są tam inne biblioteki, które są do *.ogg formatów muzycznych i wiele innych nawet karaoke. Najpiękniejszym sposobem jest to co MediaPlayer Tobie nie da to korzystanie z serwera https://www.shoutcast.com/ jak korzysta np. Winamp. Biblioteka bass.dll da Tobie możliwość odczytywania plików z buforowania plików *.pls. Bo bsss,dll to prawie Winamp.
A co do MediaPlayer możesz uczynić na podstawie jego procentowej 100 % odtwarzania np. w komponencie ScrollBar1.
Kod w następnym poście. Jeśli Tobie wystarczy MediaPlayer to oki. Też dużo potrafi.
// Kod w Delphi 7 Personal
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MPlayer, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
Button1: TButton;
OpenDialog1: TOpenDialog;
Timer1: TTimer;
ScrollBar1: TScrollBar;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
OdczytajStop : string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
if OpenDialog1.Execute then
begin
Timer1.Enabled := False;
MediaPlayer1.FileName := OpenDialog1.FileName;
MediaPlayer1.Open;
ScrollBar1.Max := MediaPlayer1.TrackLength[1];
Timer1.Enabled := True;
end;
end;
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
MediaPlayer1.Position := ScrollBar1.Position;
MediaPlayer1.Play;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ScrollBar1.Position := MediaPlayer1.Position;
OdczytajStop := FormatFloat('0#.##',(ScrollBar1.Position/ScrollBar1.Max)*100)+' %';
if MediaPlayer1.Position = ScrollBar1.Max then MediaPlayer1.Stop;
if OdczytajStop = '100 %' then Timer1.Enabled := False;
Caption := 'Demo: '+OdczytajStop;
Application.ProcessMessages;
if OdczytajStop = '100 %' then Showmessage('Koniec odtwarzania utworu :-)');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MediaPlayer1.Cursor := crHandPoint;
Form1.Position := poDesktopCenter;
Timer1.Enabled := False;
end;
end.