Q&A

  • [질문]FilterGraph를 이용한 파일재생입니다.
<!--CodeS-->
procedure TfGAME06.ViewReplay(sFileNameLeft : String; sFileNameRight : String);
begin
  try
    if nCameraCnt = 2 then begin
      if FileExists(sFileNameLeft) and FileExists(sFileNameRight) then begin
        //FilterGraph1.Active := False;
        //FilterGraph1.ClearGraph;
        //FilterGraph1.Active := True;
        if FilterGraph1.Active = False then FilterGraph1.Active := True;

        try
          FilterGraph1.RenderFile(sFileNameLeft);
        except on E : Exception do
          begin
            gDataModule.GUILog.WriteErrorLog( 'RenderFileEx1 E : '   + E.Message );
          end;

        end;

        //FilterGraph2.Active := False;
        //FilterGraph2.ClearGraph;
        //FilterGraph2.Active := True;
        if FilterGraph2.Active = False then FilterGraph2.Active := True;

        try
          FilterGraph2.RenderFile(sFileNameRight);
          //FilterGraph2.RenderFile(sFileNameRight);
        except on E : Exception do
          begin
            gDataModule.GUILog.WriteErrorLog( 'RenderFileEx2 E : '   + E.Message );
          end;

        end;  

        pnlReplayRight.Visible := True;
        PnlReplayLeft.Visible  := True;

        //VMRTextOut( '▶REPLAY', VideoWindow1 );
        //VMRTextOut( '▶REPLAY', VideoWindow2 );

        FilterGraph2.Play;
        FilterGraph1.Play;
      end;
    end
    else if nCameraCnt = 1 then begin
      if FileExists(sFileNameLeft) then begin
        {
        PnlReplayLeft.Width  := Panel2.Width;
        PnlReplayLeft.Height := Panel2.Height;
        PnlReplayLeft.Top    := Panel2.Top;
        PnlReplayLeft.Left   := Panel2.Left;
        }

        //PnlReplayLeft.Visible := True;

        FilterGraph1.Active := False;
        FilterGraph1.Active := True;
        FilterGraph1.ClearGraph;
        VideoWindow1.FilterGraph := FilterGraph1;
        FilterGraph1.RenderFileEx(sFileNameLeft);

        //VMRTextOut( '▶REPLAY', VideoWindow1 );

        PnlReplayLeft.Visible := True;        
        
        FilterGraph1.Play;
      end;
    end;
  except on E : Exception do
    begin
      PnlReplayLeft.Visible  := False;
      pnlReplayRight.Visible := False;

      gDataModule.GUILog.WriteErrorLog( 'ViewReplay E : '   + E.Message );
      gDataModule.GUILog.WriteErrorLog( 'FileName Left : '  + sFileNameLeft );
      gDataModule.GUILog.WriteErrorLog( 'FileName Right : ' + sFileNameRight );
    end;      
  end;
end;

<!--CodeE-->

위와 같은 코드로 2개의 영상을 한 폼의 두개의 비디오 윈도우로 재생합니다..

그런데 두 개의 파일이 거의 Sync된 좌우 녹화파일인데....

실제 재생을 해보면 이상하게 서로 동시에 플레이가 되질 않네요~

첫번째가 먼저 시작하고 끝난다던가...빈 화면이 뜬다던가 하는데...-_-;;;

위에 보면 필터그래프를 False하고 ClearGraph하고 다시 True하고 난 뒤 렌더링함수 호출하고....

Play를 하는데 먼가 로직에 문제가 있는건가요??

몇일동안 계속 이 현상때문에 순서도 바꿔보고 했는데..잘 안되네요..

조언 좀 부탁드립니다...즐프하세요..^^
1  COMMENTS
    • 이건희
    • 2010.01.23 02:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2010.01.23 09:19
      꼭 델파이랑 그래픽 카드라고 할 수는 없는듯해요, 사용하는 함수나 컴포넌트중 그래픽카드의 특정 부분...
    • 아이에스
      2010.01.23 02:46
      UserName = SYSDBA Password = masterkey
    • 이용벽
    • 2010.01.22 19:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2010.01.22 20:10
      메뉴에서 1) "File"->"New"->"Frame"을 클릭하세요 2) 그러면 폼과 같은 디자인 화면이 나옵니...
    • 이강석
      2010.01.20 18:16
      30일 밖에 못 쓰는게 맞는거 같은데요~~아니면 돈 주고 사시던가해야 할꺼예요~~물론 어둠의 경로로 까시...
    • 엄마미안
      2010.01.20 20:03
      학습목적인데 정품을 구매하긴 아무래도 부담이 가실겁니다. 어둠의 경로에서 델20XX 시리즈를 제외한 하...
    • 뉴비
      2010.01.21 06:07
      감사합니다. ㅠ 어둠의 경로를 뒤져야 겠군영
    • 띵아
      2010.01.30 02:15
      아 어둠의 경로 ^^ 쩝
    • 아르스
      2010.01.20 23:37
      var result : array[0..15] of Char; StrM : String; I : Integer; 이 부분을 아래처럼 바꿔...
    • 극상초보
    • 2010.01.19 19:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2010.01.19 20:58
      영어가 짧아서...원하시는 기능을 한글로 써주세요..
    • 혀노
    • 2010.01.19 02:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2010.03.08 23:13
      영상사이즈가 크다면 CPU문제가 생길수있습니다. 일단 제가보기에는 비디오 믹서를 사용해서 작업을 ...
    • 박상윤
      2010.03.08 23:15
      필요하시면 spy7111@naver.com 메일주세요. 자세히 설명해드릴께요.^^
    • 최진영
    • 2010.01.18 08:56
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 언제나초보
      2010.01.18 18:32
      GROUP BY C_NAME, TEL, (Addr_dong+Addr_bungi+Addr_Hosu+Addr_bild)
    • 이용벽
      2010.01.18 22:24
      where 와 Group by는 동시에 작동이 안됩니다. 그리고 참고로 Group by 나 Order by가 있으면 Query 수...
    • 엄마미안
      2010.01.20 20:07
      무저건 where절과 group by가 동시 작동이 안되는게 아니라. where 전에 체크하는 컬럼이 그룹바이에 엮...
    • 이용벽
      2010.01.22 18:17
      몇년 전에 비슷한 문제로 고생하다가 겨우 해결하고 넘어간 기억이 있습니다. 그때 더 이상 자세히 뜯어...
    • 이강석
      2010.01.16 03:11
      sTemp := Format( '%.2d', [Result[16]] ); 이라네요..검색했더니..^^
    • 홍성락
      2010.01.16 03:18
      도움말보시면 x형에서는 자릿수가 남으면 0으로 자동 처리됩니다. '%.2x'로하세요. Format('%.2x', [re...
    • 극상초보
      2010.01.19 18:31
      이강석님,홍성락님 정말로 감사드립니다. 덕분에 문제가 잘 해결
    • 극상초보
      2010.01.16 00:14
      result[0],result[1],result[2],result[3]에 들어 가 있는 데이터를 따로따로 String 타입으로 변경하고 ...
    • 홍성락
      2010.01.16 00:52
      Edit2.Text := String(@result); 이렇게해보세요 배열중 아스키 코드를 넣었으면 문자로 될겁니다. 배열...
    • 극상초보
      2010.01.16 01:14
      홍성락님 정말 감사합니다. 많은 도움이 되었습니다..^0^ 복받으실꺼예요!!!
    • 이강석
    • 2010.01.15 20:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2010.01.18 22:38
      CPU 100%-_-;;;;;;;
    • 박성훈
    • 2010.01.15 07:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2010.01.15 07:41
      해결했습니다.
    • ♡러브히나™
      2010.01.15 05:45
      Function Get_KoreanCharPos(letter: String; WishCnt: Integer): Integer; Var i, msb ...
    • 최용일
      2010.01.15 20:08
      ByteType이란 함수를 쓰시면 쉽게 할 수 있습니다. if Length(sString) > 40 then L := 40; If ...
    • 이의성
      2010.01.16 03:52
      감사합니다~~ 그런데, If ByteType(sString, L) = mbTrailByte then Dec(L); 에서 '='...
    • 장덕곤
    • 2010.01.15 01:43
    • 0 COMMENTS
    • /
    • 0 LIKES
    • delpia
    • 2010.01.14 18:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2010.01.15 02:03
      이미지에 보니... LoginPrompt 가 true인데요.. false이면 안 물어보지 않을까요? ^^
    • phono
      2010.01.14 18:20
      부팅시 실행시키고자 하는 본인 프로그램을 서비스 형태로 등록시켜놓되.. 실행금지목록 리스트 또는 ...
    • 이강석
      2010.01.14 20:59
      네..한 이틀 고민했는데..방법이 그것 밖에 없네요..^^감사~~