Q&A

  • WMV 동영상의 정보를 가지고 오고 싶습니다.

제가 알고자하는 것은 WMV (가능하면 저 확장자의 동영상)

의 총프레임 즉 플레이 시간을 알고 싶습니다.

미디어 플레이어 컴포턴트에 시간을 구하는 메소드가 있긴 한데

그럴라면 미디어 플레이어가 필요하지만 그 컴포넌트를 쓰지 않고

다른 컴포넌트나 API 같은 함수로 구하고 싶습니다.

2  COMMENTS
  • Profile
    박상윤 2005.01.29 18:16
    direc show를 사용하시면 간단하져..
    DsPack의 예제를 보시면.. 파일 플레이 하는 예제가 있는데
    파일을.렌더 한후
    거기서.. 시간을 얻어오면 되져..
    ^^
    그리고 .. 기타 정보도.. 얻을 수 잇습니다.
  • Profile
    하병준 2005.01.31 20:01

    답변의 내용으로 토대로 찾아서 구현했습니다..

    다른분도 필요할 경우가 있을거 같아 남깁니다.


    procedure TfrmMain.Button1Click(Sender: TObject);
    var
      fileStr : String;
      Value, H, M, S : Integer;
      MediaSeeking: IMediaSeeking;
      pStart, pStop : int64;
    begin
      if not OpenDialog.Execute then exit;

      try
        Self.Cursor := crHourGlass;
        fileStr := OpenDialog.FileName;
        FilterGraph1.ClearGraph;

        FilterGraph1.Active := False;
        FilterGraph1.Active := True;

        FilterGraph1.RenderFile(fileStr);
        FilterGraph1.QueryInterface(IMediaSeeking, MediaSeeking);

        with MediaSeeking do begin
          MediaSeeking.GetPositions(pStart,pStop);

          Value := Trunc(pStop / 10000000);
          H := value div 3600;
          M := (value mod 3600) div 60;
          S := (value mod 3600) mod 60;

          Panel1.Caption := Format('%d:%2.2d:%2.2d', [H, M, S]);
          Panel2.Caption := Format('%d 초',[Value]);
        end;
      finally
        Self.Cursor := crDefault;
      end;
    end;