AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Mediaplayer-Probleme (Absturz bei Öffnen eines neuen Clips)
Thema durchsuchen
Ansicht
Themen-Optionen

Mediaplayer-Probleme (Absturz bei Öffnen eines neuen Clips)

Ein Thema von SvenLittkowski · begonnen am 18. Dez 2004 · letzter Beitrag vom 18. Dez 2004
Antwort Antwort
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#1

Mediaplayer-Probleme (Absturz bei Öffnen eines neuen Clips)

  Alt 18. Dez 2004, 09:56
Hallo.

Zielsetzung:
Ein Programm, in dem AVI-Videoclips abgespielt werden. Jedem Videoclip ist ein Button zugeordnet, mit welchenm der Clip aufgerufen wird. Ein eventuell gerade spielender Clip soll dann auch gestoppt werden, um den neuen zu zeigen. Jederzeit soll jeder Clip abspielbar sein (und damit den vorherigen abbrechen).

Problem:
Sobald erstmal ein Clip gelaufen ist, verursacht das Drücken eines Buttons jedesmal einen Programmabsturz.

Frage:
Ich benötige daher dringend den Sourcecode von Routinen, die überprüfen, ob noch ein Clip gespielt wird bzw. offen ist, und dann in diesem Fall den Clip ordnungsgemäß schließt und den neuen gewünschten Clip OHNE FEHLER abspielt. Ich benutze Delphi 7 (da ich noch nicht hier das Delphi 2005 gewonnen habe). Auf Wunsch werde ich natürlich weitere Fragen beantworten.

Anmerkung:
Ich dachte, dies sei recht einfach, aber nachdem alle meine Versuche konsequent bis jetzt scheiterten, scheint es mir, das ich irgendwo einem grundsätzlichem Denkfehler unterliege. Daher wende ich mich an Euch mit der Bitte um Hilfe.

Sven
  Mit Zitat antworten Zitat
Benutzerbild von Birzenbae
Birzenbae

Registriert seit: 8. Okt 2004
115 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Mediaplayer-Probleme (Absturz bei Öffnen eines neuen Cli

  Alt 18. Dez 2004, 10:35
gib mal deinen bisherigen code zu dem problem frei sonst können wir dir nicht genau helfen.
David
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#3

Re: Mediaplayer-Probleme (Absturz bei Öffnen eines neuen Cli

  Alt 18. Dez 2004, 11:01
Hier ist der vollständige Code.

Erläuterung:
es gibt drei Fenster.
Box1 - Hintergrund der Anwendung mit TProgressBar
Box2 - Enthält alle Buttons und andere Komponenten, kann verschoben werden
Box3 - Enthält TPanel als Anzeige

Box1 öffnet automatisch Box2 und Box3.
Box2 lädt automatisch ein "Intro"-Video.

WICHTIGE ÄNDERUNG:
Nun gibt es nur noch einen Start- und einen Stop-Button, die Filme werden über TRadioButton ausgewählt.

Delphi-Quellcode:
unit Box2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IAeverButton, jpeg, ExtCtrls, MPlayer;

type
  TFormBeta = class(TForm)
    ButtonPlay: TIAeverButton;
    ButtonStop: TIAeverButton;
    ImagePlayer: TImage;
    Player: TMediaPlayer;
    TimerPrologue: TTimer;
    ButtonEnde: TIAeverButton;
    ButtonAbout: TIAeverButton;
    RadioButtonIntro: TRadioButton;
    RadioButtonInfo: TRadioButton;
    RadioButtonEDV: TRadioButton;
    RadioButtonKommunikation: TRadioButton;
    RadioButtonVertrieb: TRadioButton;
    RadioButtonLeitung: TRadioButton;
    RadioButtonAccounting: TRadioButton;
    RadioButtonHandling: TRadioButton;
    RadioButtonLanguages: TRadioButton;
    Label1: TLabel;
    TimerNotify: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TimerPrologueTimer(Sender: TObject);
    procedure ImagePlayerMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ImagePlayerMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure ColorsH(Sender: TObject);
    procedure ColorsN(Sender: TObject);
    procedure ButtonPlayMouseExit(sender: TObject);
    procedure ButtonPlayMouseEnter(sender: TObject);
    procedure Button09MouseEnter(sender: TObject);
    procedure ButtonEndeMouseEnter(sender: TObject);
    procedure ButtonAboutMouseEnter(sender: TObject);
    procedure ButtonStopMouseEnter(sender: TObject);
    procedure ButtonForeMouseEnter(sender: TObject);
    procedure ButtonEndeMouseExit(sender: TObject);
    procedure ButtonAboutMouseExit(sender: TObject);
    procedure ButtonStopMouseExit(sender: TObject);
    procedure ButtonPlayClick(Sender: TObject);
    procedure ButtonEndeClick(Sender: TObject);
    procedure PlayerNotify(Sender: TObject);
    procedure ButtonStopClick(Sender: TObject);
    procedure TimerNotifyTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
 ModeStr: array[TMPModes] of string=('Not ready', 'Stopped', 'Playing', 'Recording', 'Seeking', 'Paused', 'Open');

var
  FormBeta: TFormBeta;
  StartX: Integer;
  StartY: Integer;
  Status: String;

implementation

uses Box1, Box3;

{$R *.dfm}

procedure TFormBeta.FormCreate(Sender: TObject);
begin
 FormBeta.Width:=ImagePlayer.Width;
 FormBeta.Height:=ImagePlayer.Height;
 Player.Notify:=True;
end;

procedure TFormBeta.FormShow(Sender: TObject);
begin
 Player.FileName:='T_Intro.avi';
 Player.Open;
 Player.DisplayRect:=FormDelta.PanelMovie.ClientRect;
 Player.TimeFormat:=tfHMS;
 FormAlpha.Progress.Maximum:=Player.Length;
 FormAlpha.Progress.Position:=0;
 Player.Play;
 ButtonEnde.Font.Name:='System';
 ButtonStop.Font.Name:='System';
 ButtonPlay.Font.Name:='System';
 ButtonAbout.Font.Name:='System';
end;

procedure TFormBeta.TimerPrologueTimer(Sender: TObject);
begin
 FormAlpha.Progress.Position:=Player.Position;
 Player.DisplayRect:=FormDelta.PanelMovie.ClientRect;
 if Player.Position=Player.Length then
 begin
  FormAlpha.Progress.Position:=0;
  FormAlpha.Progress.Visible:=False;
 end;
end;

procedure TFormBeta.ImagePlayerMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 StartX:=X;
 StartY:=Y;
end;

procedure TFormBeta.ImagePlayerMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
 if ssLeft in Shift then
 begin
  if X>StartX then
  begin
   FormBeta.Left:=FormBeta.Left+(X-StartX);
   FormDelta.Left:=FormBeta.Left+182;
  end
  else
  if X<StartX then
  begin
   FormBeta.Left:=FormBeta.Left-(StartX-X);
   FormDelta.Left:=FormBeta.Left+182;
  end;
  if Y>StartY then
  begin
   FormBeta.Top:=FormBeta.Top+(Y-StartY);
   FormDelta.Top:=FormBeta.Top+44;
  end
  else
  if Y<StartY then
  begin
   FormBeta.Top:=FormBeta.Top-(StartY-Y);
   FormDelta.Top:=FormBeta.Top+44;
  end;
 end;
end;

procedure TFormBeta.ColorsH(Sender: TObject);
begin
 with Sender as TIAeverButton do
 begin
  if ButtonColor=$002E4881 then
  begin
   ButtonColor:=$00106EB8;
   ButtonColor1:=$0024365B;
   Font.Color:=$00FFFFFF;
  end
  else
  if ButtonColor=$0092A8C7 then
  begin
   ButtonColor:=$009CD7F3;
   ButtonColor1:=$009CD7F3;
   Font.Color:=$00FFFFFF;
  end;
 end;
end;

procedure TFormBeta.ColorsN(Sender: TObject);
begin
 with Sender as TIAeverButton do
 begin
  if ButtonColor=$00106EB8 then
  begin
   ButtonColor:=$002E4881;
   ButtonColor1:=$0024365B;
   Font.Color:=$0092A8C7;
  end
  else
  if ButtonColor=$009CD7F3 then
  begin
   ButtonColor:=$0092A8C7;
   ButtonColor1:=$0092A8C7;
   Font.Color:=$00000000;
  end;
 end;
end;

procedure TFormBeta.ButtonPlayMouseExit(sender: TObject);
begin
 ColorsN(Sender);
end;

procedure TFormBeta.ButtonPlayMouseEnter(sender: TObject);
begin
 ColorsH(Sender);
end;

procedure TFormBeta.Button09MouseEnter(sender: TObject);
begin
 ColorsH(Sender);
end;

procedure TFormBeta.ButtonEndeMouseEnter(sender: TObject);
begin
 ColorsH(Sender);
end;

procedure TFormBeta.ButtonAboutMouseEnter(sender: TObject);
begin
 ColorsH(Sender);
end;

procedure TFormBeta.ButtonStopMouseEnter(sender: TObject);
begin
 ColorsH(Sender);
end;

procedure TFormBeta.ButtonForeMouseEnter(sender: TObject);
begin
 ColorsH(Sender);
end;

procedure TFormBeta.ButtonEndeMouseExit(sender: TObject);
begin
 ColorsN(Sender);
end;

procedure TFormBeta.ButtonAboutMouseExit(sender: TObject);
begin
 ColorsN(Sender);
end;

procedure TFormBeta.ButtonStopMouseExit(sender: TObject);
begin
 ColorsN(Sender);
end;

procedure TFormBeta.ButtonPlayClick(Sender: TObject);
begin
 if RadioButtonIntro.Checked=True then Player.FileName:='T_Intro.avi'
 else
 if RadioButtonInfo.Checked=True then Player.FileName:='T_Info.avi'
 else
 if RadioButtonEDV.Checked=True then Player.FileName:='T_EDV.avi'
 else
 if RadioButtonHandling.Checked=True then Player.FileName:='T_GroupEventHandling.avi'
 else
 if RadioButtonKommunikation.Checked=True then Player.FileName:='T_Bürokommunikation.avi'
 else
 if RadioButtonLanguages.Checked=True then Player.FileName:='T_Language.avi'
 else
 if RadioButtonVertrieb.Checked=True then Player.FileName:='T_Vertriebssystem.avi'
 else
 if RadioButtonLeitung.Checked=True then Player.FileName:='T_Travel.avi'
 else
 if RadioButtonAccounting.Checked=True then Player.FileName:='T_Accounting.avi';
 Player.Open;
 Player.DisplayRect:=FormDelta.PanelMovie.ClientRect;
 Player.TimeFormat:=tfHMS;
 FormAlpha.Progress.Maximum:=Player.Length;
 FormAlpha.Progress.Position:=0;
 Player.Play;
end;

procedure TFormBeta.ButtonEndeClick(Sender: TObject);
begin
 Application.Terminate;
end;

procedure TFormBeta.PlayerNotify(Sender: TObject);
begin
 with Sender as TMediaPlayer do
 begin
  Notify:=True;
  if ModeStr[Mode]='Playingthen
  begin
   Label1.caption:=ModeStr[Mode];
   TimerPrologue.Enabled:=True;
   FormAlpha.Progress.Position:=0;
   FormAlpha.Progress.Visible:=True;
   ButtonPlay.Enabled:=False;
   ButtonStop.Enabled:=True;
   RadioButtonIntro.Font.Color:=$0024365B;
   RadioButtonInfo.Font.Color:=$0024365B;
   RadioButtonEDV.Font.Color:=$0024365B;
   RadioButtonHandling.Font.Color:=$0024365B;
   RadioButtonKommunikation.Font.Color:=$0024365B;
   RadioButtonLanguages.Font.Color:=$0024365B;
   RadioButtonVertrieb.Font.Color:=$0024365B;
   RadioButtonLeitung.Font.Color:=$0024365B;
   RadioButtonAccounting.Font.Color:=$0024365B;
   Notify:=True;
  end
  else
  if ModeStr[Mode]<>'Playingthen
  begin
   Label1.caption:=ModeStr[Mode];
   TimerPrologue.Enabled:=False;
   FormAlpha.Progress.Position:=0;
   FormAlpha.Progress.Visible:=False;
   ButtonPlay.Enabled:=True;
   ButtonStop.Enabled:=False;
   RadioButtonIntro.Font.Color:=$002E4881;
   RadioButtonInfo.Font.Color:=$002E4881;
   RadioButtonEDV.Font.Color:=$002E4881;
   RadioButtonHandling.Font.Color:=$002E4881;
   RadioButtonKommunikation.Font.Color:=$002E4881;
   RadioButtonLanguages.Font.Color:=$002E4881;
   RadioButtonVertrieb.Font.Color:=$002E4881;
   RadioButtonLeitung.Font.Color:=$002E4881;
   RadioButtonAccounting.Font.Color:=$002E4881;
   Notify:=True;
  end;
  Notify:=True;
 end;
end;

procedure TFormBeta.ButtonStopClick(Sender: TObject);
begin
 Player.Close;
 Player.FileName:='';
end;

procedure TFormBeta.TimerNotifyTimer(Sender: TObject);
begin
 Player.Notify:=True;
 Label1.caption:=ModeStr[Player.Mode];
end;

end.
Wie man sieht, habe ich schon erfolglos versucht, mehrere Wege zu gehen (z.B. Notify).

Vielen aufrechten Dank für Eure Hilfe.

Sven
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#4

Re: Mediaplayer-Probleme (Absturz bei Öffnen eines neuen Cli

  Alt 18. Dez 2004, 11:03
Box1 = FormAlpha
Box2 = FormBeta
Box3 = FormDelta

Sven
  Mit Zitat antworten Zitat
Benutzerbild von Birzenbae
Birzenbae

Registriert seit: 8. Okt 2004
115 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Mediaplayer-Probleme (Absturz bei Öffnen eines neuen Cli

  Alt 18. Dez 2004, 11:10
versuchs mal so
Delphi-Quellcode:
procedure TFormBeta.ButtonPlayClick(Sender: TObject);
begin
Player.Close; //bzw. Player.Stop;
.....
end;
das müsste helfen
David
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#6

Re: Mediaplayer-Probleme (Absturz bei Öffnen eines neuen Cli

  Alt 18. Dez 2004, 11:55
Ich meine, dies hatte ich bereits ausprobiert, aber ich will sichergehen. Ich werde es also auf diese Art probieren, und mein Resultat hier wieder posten (wohl am Sonntag).

Danke, soweit.

Sven
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:08 Uhr.
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