2012-01-31 3 views
2

델파이의 Iam 초보자는 하나의 샘플 애플리케이션을 만듭니다. delphi 내부에서 FFMPEG를 사용하려면 help.how가 하나 필요합니까?델파이 내부에서 FFMPEG를 사용하는 방법

+4

이 질문에 잘못된 것이 보이지 않습니다. – Simon

+0

동일한 정보를 찾고있는 것처럼 완벽하게 유효합니다. – ruhalde

답변

1

다음은 Delphi 용 FFmpeg의 캡슐화 라이브러리입니다.

http://www.delphiffmpeg.com/

당신은 문서를 읽고 예제를 구축하려고 할 수 있습니다.

4

FFMPEG는 명령 줄 앱이므로 ShellExecute()을 사용하여 쉽게 호출 할 수 있으며 일부 예제는 here입니다.

그러나 먼저 사용할 명령 줄 스위치를 결정해야합니다.

추가 도움이 필요한 경우 내일 코드를 게시 할 수 있습니다.

편집 :

여기

명령 줄 응용 프로그램을 실행하는보다 진보 된 방법이다 : 그것은과 같이 호출 할 수 있습니다

procedure GetDosOutput(CommandLine, WorkDir: string;aMemo : TMemo); 
var 
    SA: TSecurityAttributes; 
    SI: TStartupInfo; 
    PI: TProcessInformation; 
    StdOutPipeRead, StdOutPipeWrite: THandle; 
    WasOK: Boolean; 
    Buffer: array[0..255] of AnsiChar; 
    BytesRead: Cardinal; 
    Handle: Boolean; 
begin 
    AMemo.Lines.Add('Commencing processing...'); 
    with SA do begin 
    nLength := SizeOf(SA); 
    bInheritHandle := True; 
    lpSecurityDescriptor := nil; 
    end; 
    CreatePipe(StdOutPipeRead, StdOutPipeWrite, @SA, 0); 
    try 
    with SI do 
    begin 
     FillChar(SI, SizeOf(SI), 0); 
     cb := SizeOf(SI); 
     dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; 
     wShowWindow := SW_HIDE; 
     hStdInput := GetStdHandle(STD_INPUT_HANDLE); // don't redirect stdin 
     hStdOutput := StdOutPipeWrite; 
     hStdError := StdOutPipeWrite; 
    end; 
    Handle := CreateProcess(nil, PChar('cmd.exe /C ' + CommandLine), 
          nil, nil, True, 0, nil, 
          PChar(WorkDir), SI, PI); 
    CloseHandle(StdOutPipeWrite); 
    if Handle then 
     try 
     repeat 
      WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil); 
      if BytesRead > 0 then 
      begin 
      Buffer[BytesRead] := #0; 
      AMemo.Text := AMemo.Text + Buffer; 
      end; 
     until not WasOK or (BytesRead = 0); 
     WaitForSingleObject(PI.hProcess, INFINITE); 
     finally 
     CloseHandle(PI.hThread); 
     CloseHandle(PI.hProcess); 
     end; 
    finally 
    CloseHandle(StdOutPipeRead); 
    AMemo.Lines.Add('Processing completed successfully.'); 
    AMemo.Lines.Add('**********************************'); 
    AMemo.Lines.Add(''); 
    end; 
end; 

:

그것은보기 위해 메모에 출력을 리디렉션
cmd := 'ffmpeg.exe -i "'+InFile+'" -vcodec copy -acodec copy "'+OutFile+'"'; 
GetDosOutput(cmd,FFMPEGDirectory,MemoLog); 
+0

안녕 사이먼, 어떤 예도 들려 줄 수 있어요. – periyasamy

관련 문제