Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kein Sound vom TMediaPlayer (https://www.delphipraxis.net/169526-kein-sound-vom-tmediaplayer.html)

Drahcir 26. Jul 2012 15:21

Kein Sound vom TMediaPlayer
 
Ja ich weiß die frage nach dem Media-Player zum Abspielen von .wav-Dateien gab es schon hunderte male, aber da mein Programm nicht funktioniert, obwohl ich es nach diversen Tutorials nachgemacht und verglichen habe, möchte ich hier mal fragen ob wer den fehler findet.

Das Programm ist eigentlich eine normale Eieruhr, die stündlich nen Sound (Plinfa.wav) ausgeben soll. Dazu ne nette Animation, nen Bild (Image2) das sich auf und ab bewegt, dazu der Hintergrund (Image1). Ausserdem soll das ganze in die systemTray (wenn man das so nennt) minimierbar sein.

Das Programm funktioniert einwandfrei (Timer, Animation, minimieren und wiederherstellen) aber der MediaPlayer macht mir Probleme. Die .wav-Datei liegt im Ordner wo das Programm ist und wird (anscheinend) ordnungsgemäß geladen, nur das wenn ich dann erst auf den button und dann im MediaPlayer auf "Play" drücke passiert nichts, ich höre zumindest keinen Sound. Weiß wer warum?

Delphi-Quellcode:
unit mPinguTimer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg, StdCtrls, ShellAPI, Menus, mmSystem, Buttons,
  MPlayer, ShlObj;

type
  TfrmMain = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    Image2: TImage;
    Image1: TImage;
    btReset: TButton;
    Timer2: TTimer;
    SpeedButton1: TSpeedButton;
    Label2: TLabel;
    SpeedButton2: TSpeedButton;
    Button1: TButton;
    MediaPlayer1: TMediaPlayer;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure btResetClick(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    h, Minuten, Sekunden : Integer;
    t : Real;
    Lautlos : Boolean;
    TaskBarNewReg : DWORD;
    IconData: TNotifyIconData;
  public
    procedure WndProc(var Msg: TMessage); override;
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
  end;

var
  frmMain: TfrmMain;

implementation {$R *.dfm}

procedure TfrmMain.WndProc(var Msg: TMessage);
var Point: TPoint;
begin
  // WM_USER + 20 ist unsere TNA Icon Nachricht
  if Msg.Msg = WM_USER + 20 then
  begin
    // im lParam steht die Nachricht
    case Msg.lParam of
      // linke Taste
      WM_RBUTTONDOWN:
        begin
           MessageDLG('Restzeit: ' + Formatfloat('00', Minuten) + ':'
                    + Formatfloat('00', Sekunden), mtInformation, [mbOk], 0);
        end;
      // Doppelklick
      WM_LBUTTONDBLCLK:
        begin
          // Fenster anzeigen
          frmMain.Show;
          // Icon entfernen
          Shell_NotifyIcon(NIM_DELETE, @IconData);
        end;
    end;
  end
  // Taskbar wurde im System registriert, Icon einfügen
  else if Msg.Msg = TaskBarNewReg then
  begin
    Shell_NotifyIcon(NIM_ADD, @IconData);
  end;
  inherited;
end;


procedure TfrmMain.WMSysCommand(var Message: TWMSysCommand);
begin
  // Fenster wurde minimiert
  if Message.CmdType and $FFF0 = SC_MINIMIZE then
  begin
    Hide;
    // Icon in der TNA anzeigen
    Shell_NotifyIcon(NIM_ADD, @IconData);
  end
  else
    inherited;
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE, @IconData);
end;

//*****************************************************************************

procedure TfrmMain.Timer1Timer(Sender: TObject);
var Faktor : Integer;
begin
  Faktor := 10;

  if t >= (Faktor*2) then t := 0;

  t := t + 0.5;
  h := round( -( (t-Faktor)*(t-Faktor) ) + Faktor*Faktor);

  Image2.Top := 150 - h;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  frmMain.DoubleBuffered := True;

  //*******************************
  // Message ID für Message merken, die gesendet wird, wenn die Taskbar im
  // System registriert wird.
  TaskBarNewReg := RegisterWindowMessage('TaskbarCreated');
  // IconData Struktur füllen
  IconData.cbSize := SizeOf(IconData);
  IconData.Wnd := Handle;
  IconData.uID := 100;
  IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
  IconData.uCallBackMessage := WM_USER + 20;
  IconData.hIcon := Application.Icon.Handle;
  IconData.szTip := 'Pingu-Timer';
  // Icon einfügen. Bei Bedarf sofort
  //Shell_NotifyIcon(NIM_ADD, @IconData);
end;

procedure TfrmMain.Image2Click(Sender: TObject);
begin
  t := 0;
  Minuten := 60; Sekunden := 00;
  Timer2.Enabled := true;
  Timer1.Enabled := true;
  Image2.Enabled := false;
  btReset.Enabled := true;
end;

procedure TfrmMain.btResetClick(Sender: TObject);
begin
  btReset.Enabled := false;
  Label1.Caption := 'Klick auf den Pingu zum Starten';
  Image2.Enabled := true;
  Timer1.Enabled := false;
  Timer2.Enabled := false;
  Image2.Top := 150;
end;

procedure TfrmMain.Timer2Timer(Sender: TObject);
begin
  if Sekunden <> 0
  then Sekunden := Sekunden - 1
  else begin

    if Minuten <> 0
    then begin
      Minuten := Minuten - 1;
      Sekunden := 59;
    end
    else begin
      Minuten := 59; Sekunden := 59;
      if Lautlos = false then MessageBeep(MB_ICONEXCLAMATION);
    end;
  end;

  Label1.Caption := 'Verbleibende Zeit: ' + Formatfloat('00', Minuten) + ':' + Formatfloat('00', Sekunden);
end;

procedure TfrmMain.SpeedButton1Click(Sender: TObject);
begin
  if Lautlos = true
  then begin
    Lautlos := false;
    SpeedButton1.Caption := 'Ton ist an'
  end
  else begin
    Lautlos := true;
    SpeedButton1.Caption := 'Ton ist aus'
  end;
end;

procedure TfrmMain.SpeedButton2Click(Sender: TObject);
begin
  Messagedlg('Musik: Pokémon Plinfa'#13'Bilder sind dem Spiel NosTale.de entnommen', mtInformation, [mbOk], 0);
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  MediaPlayer1.Close;
  mediaplayer1.Open;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  mediaplayer1.Close;
end;

end.
Ja ich weiß, es ist wie immer durcheinander und hat sicher noch hunderte Fehler ...
Der ObjektInspektor zur MediaPlayer findet ihr HIER

Klaus01 26. Jul 2012 16:02

AW: Kein Sound vom TMediaPlayer
 
Hallo,

vielleicht habe ich es übersehen, aber wo startest Du das Abspielen der Sounddatei.

Ich sehe nirgendwo mediaplayer1.play.

Grüße
Klaus

Drahcir 26. Jul 2012 16:06

AW: Kein Sound vom TMediaPlayer
 
Zitat:

Zitat von Klaus01 (Beitrag 1176000)
Hallo,

vielleicht habe ich es übersehen, aber wo startest Du das Abspielen der Sounddatei.

Ich sehe nirgendwo mediaplayer1.play.

Grüße
Klaus

Das mach ich doch indem ich (erstmal) nur auf den Play-Button drücke um zu sehen ob überhaupt sound ausgegeben wird. Sonst könnte an das .Play ja auch in den Button1 setzen, die automatische wiedergabe kann ich ja einbauen wenn der sound da ist :)

Oder muss ich irgendwo noch definieren was passieren muss wenn ich auf den grünen pfeil drücke?

Horst0815 26. Jul 2012 17:01

AW: Kein Sound vom TMediaPlayer
 
ist schon ewig her, aber soweit ich mich errinnern kann musst du die buttons noch einbinden. bin noch mit dem smartphone auf arbeit und kann da jetzt nich weiter suchen


http://docwiki.embarcadero.com/CodeS...Player_(Delphi)

lbccaleb 26. Jul 2012 17:01

AW: Kein Sound vom TMediaPlayer
 
Nimm mal dein mediaplayer.close und .open raus und stell die einstellung autoopen im oi auf true, und schau mal ob es dann geht....

Drahcir 26. Jul 2012 18:30

AW: Kein Sound vom TMediaPlayer
 
Zitat:

Zitat von lbccaleb (Beitrag 1176006)
Nimm mal dein mediaplayer.close und .open raus und stell die einstellung autoopen im oi auf true, und schau mal ob es dann geht....

Hab ich probiert, Programm startet normal, aber nach Klick auf den Grünen Pfeil tut sich anch wie vor nichts.


Zitat:

Zitat von Horst0815 (Beitrag 1176004)
ist schon ewig her, aber soweit ich mich errinnern kann musst du die buttons noch einbinden. bin noch mit dem smartphone auf arbeit und kann da jetzt nich weiter suchen


http://docwiki.embarcadero.com/CodeS...Player_(Delphi)

das weiß ich nicht aber da werd ich gleich auch mal nach googlen ... :)

lbccaleb 26. Jul 2012 18:41

AW: Kein Sound vom TMediaPlayer
 
Nene, da muss nichts eingebunden werden, habs gerade getestet und bei mir läufts mit Delphi 7 ohne Probs!

Drahcir 26. Jul 2012 20:49

AW: Kein Sound vom TMediaPlayer
 
Zitat:

Zitat von lbccaleb (Beitrag 1176011)
Nene, da muss nichts eingebunden werden, habs gerade getestet und bei mir läufts mit Delphi 7 ohne Probs!

Auch die Wiedergabe der .wav-Datei?
Und wieso geht es denn dann bei mir nicht :(

Kann es sein das, dass Delphi meine Soundkarte nicht ansprechen kann oder so?
Wäre ja denkbar das das Abspielen an sich funktioniert nur die Weitergabe des Sounds an die Boxen bzw. an das Headset nicht klappt ...

Ich hoffe auf weitere Hilfen oder Ideen :|

lbccaleb 26. Jul 2012 23:40

AW: Kein Sound vom TMediaPlayer
 
Nee das glaub ich nicht das nur Delphi keinen Sound ausgibt. Probiere mal andere Datei Formate mit dem MediaPlayer abzuspielen, vllt gibts dort nen Codec Problem.

Alternativ könntest du auch einfach was anderes nehmen, über Bass oder DirectShow

Horst0815 27. Jul 2012 10:37

AW: Kein Sound vom TMediaPlayer
 
versuch mal eine ander wav datei ich meine mich zu errinnern das es mit einzelnen dateien probleme beim abspielen gab. ausserdem solltest du sicherstellen das die datei wirklich geladen wird. bin leider wieder auf arbeit schau es mir heut nachmittag aber mal an. ausserdem solltest du dir mal die NEWAC komponente anschauen die ziemlich gut ist


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz