Q&A

  • DSPack 문의드립니다!
DSPack을 사용하여 동영상과 사운드등.. 미디어 파일을 재생하는 프로그램을 만들고
있습니다.
DSPack에 있는 트랙바를 사용하여 구현도 하고 있는데,
플레이를 하기전, 트랙바를 움직여 원하는 위치에 놓고
필터의 Play 함수를 호출하면 원하는 위치에서 재생되는 것이 아니라,
맨 처음부터 재생이 됩니다.
그래서 검색해보니 IMediaSeeking 을 사용하여 위치를 바꿔 보아도
결과는 같았습니다.
방법이 없겠습니까??
2  COMMENTS
  • Profile
    라벤더 2005.03.16 01:08
    DSPack.pas에서

    일단 TDSTrackBar 의 MouseUp을 살펴보시죠..

    영상을 불러왔든, 불러오지 않았든간에 마우스업일때 발생하는데

    MediaSeeking도 보셨다고 하니 아시겠지만,

    FMediaSeeking.SetPositions로 트랙바의 위치를 설정해주죠..

    그런데 영상이 불러와졌을 때는 TDSTrackBar.GraphEvent 로 이벤트가 넘어갑니다.

    여기서 님이 질문하신 부분에 대한 두 가지 방법이 있는데,

    이 이벤트를 아예 막아버리거나 아니면 이 함수 내부를 고쳐주는 겁니다.

    MouseUp에서와 같게 트랙바의 위치가 설정되게끔요..

    첫번째는..; 소스가 참으로 복잡하여.... 시도하다가 -ㅁ- ;;

    두번째는 성공적으로 되네요 코드는 이런식으로..

    <!--CodeS-->
    procedure TDSTrackBar.GraphEvent(Event, Param1, Param2: integer);
      var
        StopPosition, CurrentPosition: int64;
      begin
        case Event of
          EC_CLOCK_CHANGED: if assigned(FMediaSeeking) then
            begin
             FMediaSeeking.GetStopPosition(StopPosition);
             CurrentPosition := (StopPosition * Position) div max ;
             FMediaSeeking.SetPositions(CurrentPosition, AM_SEEKING_AbsolutePositioning,
                                        StopPosition   , AM_SEEKING_NoPositioning);
            end;
         end;
      end;
    <!--CodeE-->

    다른 방법이 있는지는;; 잘 모르겠습니다만 본인 생각이니 그냥 참고만하세요 ^.^;



  • Profile
    장종희 2005.03.16 01:59
    조속한 답변 감사드립니다~
    일단 꽁수로 렌더 후 pause 했더니 되긴 되네요..
    알려주신 방법도 한번 해보고 끝내야겠네요..
    그럼, 좋은 하루되세요!