MediaPlayer – przechwycenie zakończenia utworu

0

Witam,

Proszę o pomoc jak przechwycić (odczytać) w komponencie MediaPlayer, że utwór się już skończył.
Dziękuję za pomoc.

0

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.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1