Q&A

  • <긴급>mediaplayer의 연속재생...정말 안되네요..으으
아래는 전번에 올린 질문과 답입니다.

===================================

비즈코리아 wrote:

>

> 웅...mediaplayer로 동영상을 화면에 올리면 잘 돌아갑니다.

> 근데...약 5분짜리 이 동영상을..한번 돌린후에 끝나면..다시 처음부터 자동으로

> 돌리고 싶은데...아무리해도 더 이상 돌아가지가않는군요...

> 아래처럼 어떤분의 말대로 했는대도 안됩니다.

>

> If (MediaPlayer1.NotifyValue = nvSuccessful) and (MediaPlayer1.Mode =

> mpStopped) then

> MediaPlayer1.Play;

>

>

> 어떤 event에 어떤 값을 넣어야하는지 답답합니다.

> 고수분들의 도움을 기다립니다.

> 1. 한가지 동영상(mpg 등등)을 계속해서 연결하여 반복재생시키는 방법과

> 2. 여러개의 동영상(mpg 등등)을 하나씩 재생해서 끝나면 그 다음 동영상을

> 자동으로 재생하는 방법을 알고싶습니다.

> 부탁드립니다.

> 그럼 이만.,



---------------------------------------------------------------------------------



저도 어케하는지 기억이 안나서 만들어 두었던 소스를 열어봤더니 이렇게 되어있더군요.

제 프로그램에서는 잘 돌아갑니다. 그리고, 제가 mmplayer.pas를 조금 수정해서 사용

했는데 이거랑은 관련이 없을것 같으네요.

참조하세요.

OnNotify event에 넣어주면 됩니다.



with MediaPlayer1 do

if Mode <> mpNotReady then

begin

if Length = Position then

Position := 0;



Notify := TRUE;

Play;

end;



ps : 무슨 프로젝트 하시는지 제게도 귀뜸좀 해주세요. ^^;;; 파하하하하...



==================

도와주신분이 올려준대로 해도 안되기는 마찬가지입니다.

덕분에 property 나 event에 대해서 무지하게 공부한

시간이 되어서 진심으로 답신에 감사드립니다.

그치만 아직 해결되지 않아서

다시한번 올립니다.



현재의 소스를 그대로 올려드립니다.

왜 연속재생이 안되는지요.

처음 한번은 잘돌아가고나서...

그 다음엔 그냥 서 있습니다.

상태는 playing 상태에로 나오고요...(분명히 동영상은 끝났는데...)

좀더 자세한 도움 부탁드립니다.



procedure Tform1.MediaPlayer1Notify(Sender: TObject);

begin

With Mediaplayer1 do

if (Mode <> mpnotReady)

or (Mode <> mpStopped) then

begin

if length = position then

position := 0;

notify := True;

Play;

end;



end;



procedure Tform1.FormCreate(Sender: TObject);

begin

MediaPlayer1.filename := 'c:위험.mpg';

MediaPlayer1.Open;

MediaPlayer1.DisplayRect := Panel6.ClientRect;

MediaPlayer1.Play;

MediaPlayer1.Notify := True;

end;



위의 상태로는 얀속재생이 되지 않습니다.

그래서 다음부분을 추가해서..player의 상태를 check했더니..



with Sender as TMediaPlayer do

begin

Tform1.Caption := ModeStr[Mode];

Notify := True;

Enabled := False;

end;



caption 에는 만 계속 떠있더군요.,,

동영상은 한번이 다 돌아서 끝났는데 왜 계속 play 인지..으으..





답답해서...다음과같은 문장으로 재차 해보았습니다.

procedure Tform1.MediaPlayer1Exit(Sender: TObject);

begin



MediaPlayer1.CLose;

MediaPlayer1.filename := 'c:위험.mpg';

MediaPlayer1.Open;

MediaPlayer1.Display := Panel6;

MediaPlayer1.DisplayRect := Panel6.ClientRect;

MediaPlayer1.AutoEnable := True;

MediaPlayer1.Play;

MediaPlayer1.Notify := True;

end;



이역시 처리되지 않았습니다.





그런데..문제는...

그 상테에서...mediaplyer가 display되는 panel에다가

onclick event에 다음처럼 주면 그 상태에서는

다시한번 더 돌아간다는거지요...으으..

물론 연속재생이 아니라..

한번 click할때마다 한번씩 돌아가요....으으

procedure Tform1.Panel6Click(Sender: TObject);

begin

MediaPlayer1.filename := 'c:위험.mpg';

MediaPlayer1.Open;

MediaPlayer1.Display := Panel6;

MediaPlayer1.DisplayRect := Panel6.ClientRect;

MediaPlayer1.AutoEnable := True;

MediaPlayer1.Play;

MediaPlayer1.Notify := True;

end;



도대체 연속재생시에 필요한 event와 처리방법을 알수가 없군요..

고수님들의 적극적인 도움을 기다립니다.

그럼 이만.



2  COMMENTS
  • Profile
    Mr.Q 2000.11.23 07:25
    웨이브파일 연속재생인데요.. 매체종류만 바꾸면 될테니까..





    procedure TForm1.Button1Click(Sender: TObject);

    begin

    With MediaPlayer1 do

    Begin

    AutoEnable:= True;

    AutoOpen:= True;

    AutoRewind:= True;

    Visible:= False;

    FileName:='C:rarara.wav';

    Tag:= 0;

    Play;

    End;

    end;



    procedure TForm1.MediaPlayer1Notify(Sender: TObject);

    begin

    With MediaPlayer1 do

    Begin

    Tag:= Tag + 1;

    If Tag < 3 then MediaPlayer1.Play;

    End;

    end;







    비즈 wrote:

    > 아래는 전번에 올린 질문과 답입니다.

    > ===================================

    > 비즈코리아 wrote:

    > >

    > > 웅...mediaplayer로 동영상을 화면에 올리면 잘 돌아갑니다.

    > > 근데...약 5분짜리 이 동영상을..한번 돌린후에 끝나면..다시 처음부터 자동으로

    > > 돌리고 싶은데...아무리해도 더 이상 돌아가지가않는군요...

    > > 아래처럼 어떤분의 말대로 했는대도 안됩니다.

    > >

    > > If (MediaPlayer1.NotifyValue = nvSuccessful) and (MediaPlayer1.Mode =

    > > mpStopped) then

    > > MediaPlayer1.Play;

    > >

    > >

    > > 어떤 event에 어떤 값을 넣어야하는지 답답합니다.

    > > 고수분들의 도움을 기다립니다.

    > > 1. 한가지 동영상(mpg 등등)을 계속해서 연결하여 반복재생시키는 방법과

    > > 2. 여러개의 동영상(mpg 등등)을 하나씩 재생해서 끝나면 그 다음 동영상을

    > > 자동으로 재생하는 방법을 알고싶습니다.

    > > 부탁드립니다.

    > > 그럼 이만.,

    >

    > ---------------------------------------------------------------------------------

    >

    > 저도 어케하는지 기억이 안나서 만들어 두었던 소스를 열어봤더니 이렇게 되어있더군요.

    > 제 프로그램에서는 잘 돌아갑니다. 그리고, 제가 mmplayer.pas를 조금 수정해서 사용

    > 했는데 이거랑은 관련이 없을것 같으네요.

    > 참조하세요.

    > OnNotify event에 넣어주면 됩니다.

    >

    > with MediaPlayer1 do

    > if Mode <> mpNotReady then

    > begin

    > if Length = Position then

    > Position := 0;

    >

    > Notify := TRUE;

    > Play;

    > end;

    >

    > ps : 무슨 프로젝트 하시는지 제게도 귀뜸좀 해주세요. ^^;;; 파하하하하...

    >

    > ==================

    > 도와주신분이 올려준대로 해도 안되기는 마찬가지입니다.

    > 덕분에 property 나 event에 대해서 무지하게 공부한

    > 시간이 되어서 진심으로 답신에 감사드립니다.

    > 그치만 아직 해결되지 않아서

    > 다시한번 올립니다.

    >

    > 현재의 소스를 그대로 올려드립니다.

    > 왜 연속재생이 안되는지요.

    > 처음 한번은 잘돌아가고나서...

    > 그 다음엔 그냥 서 있습니다.

    > 상태는 playing 상태에로 나오고요...(분명히 동영상은 끝났는데...)

    > 좀더 자세한 도움 부탁드립니다.

    >

    > procedure Tform1.MediaPlayer1Notify(Sender: TObject);

    > begin

    > With Mediaplayer1 do

    > if (Mode <> mpnotReady)

    > or (Mode <> mpStopped) then

    > begin

    > if length = position then

    > position := 0;

    > notify := True;

    > Play;

    > end;

    >

    > end;

    >

    > procedure Tform1.FormCreate(Sender: TObject);

    > begin

    > MediaPlayer1.filename := 'c:위험.mpg';

    > MediaPlayer1.Open;

    > MediaPlayer1.DisplayRect := Panel6.ClientRect;

    > MediaPlayer1.Play;

    > MediaPlayer1.Notify := True;

    > end;

    >

    > 위의 상태로는 얀속재생이 되지 않습니다.

    > 그래서 다음부분을 추가해서..player의 상태를 check했더니..

    >

    > with Sender as TMediaPlayer do

    > begin

    > Tform1.Caption := ModeStr[Mode];

    > Notify := True;

    > Enabled := False;

    > end;

    >

    > caption 에는 만 계속 떠있더군요.,,

    > 동영상은 한번이 다 돌아서 끝났는데 왜 계속 play 인지..으으..

    >

    >

    > 답답해서...다음과같은 문장으로 재차 해보았습니다.

    > procedure Tform1.MediaPlayer1Exit(Sender: TObject);

    > begin

    >

    > MediaPlayer1.CLose;

    > MediaPlayer1.filename := 'c:위험.mpg';

    > MediaPlayer1.Open;

    > MediaPlayer1.Display := Panel6;

    > MediaPlayer1.DisplayRect := Panel6.ClientRect;

    > MediaPlayer1.AutoEnable := True;

    > MediaPlayer1.Play;

    > MediaPlayer1.Notify := True;

    > end;

    >

    > 이역시 처리되지 않았습니다.

    >

    >

    > 그런데..문제는...

    > 그 상테에서...mediaplyer가 display되는 panel에다가

    > onclick event에 다음처럼 주면 그 상태에서는

    > 다시한번 더 돌아간다는거지요...으으..

    > 물론 연속재생이 아니라..

    > 한번 click할때마다 한번씩 돌아가요....으으

    > procedure Tform1.Panel6Click(Sender: TObject);

    > begin

    > MediaPlayer1.filename := 'c:위험.mpg';

    > MediaPlayer1.Open;

    > MediaPlayer1.Display := Panel6;

    > MediaPlayer1.DisplayRect := Panel6.ClientRect;

    > MediaPlayer1.AutoEnable := True;

    > MediaPlayer1.Play;

    > MediaPlayer1.Notify := True;

    > end;

    >

    > 도대체 연속재생시에 필요한 event와 처리방법을 알수가 없군요..

    > 고수님들의 적극적인 도움을 기다립니다.

    > 그럼 이만.

    >

  • Profile
    비즈 2000.11.25 00:23
    감사합니다.