FFMPEG 트랜스 코딩 프로세스 정보를 VB6 GUI 앱에 연결하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/867383

  •  22-08-2019
  •  | 
  •  

문제

나는 VB6 GUI Frontend를 사용하고 있습니다 ffmpeg 그리고 지금까지 내가 할 수있는 일은 CMD.Exe를 통해 FFMPEG를 호출하는 것입니다. 이는 전체 프로세스가 여전히 실행되는 동안 명령 프롬프트를 표시합니다. 그리고 나는 이것이 FFMPEG의 또 다른 파스칼 기반의 프론트 엔드 GUI 인 Winff가 어떻게 작동하는지 보는 표준이라고 생각했습니다.

하지만 다른 것을 보았을 때 나는 날아 갔다 진행률 표시 줄과 모든 것이있는 GVC GUI.

기본적으로 전체 명령 프롬프트를 깨끗하게 숨기고 트랜스 코딩 진행 상황을 진행 막대에 링크하는 방법을 찾고 있습니다.

그래서 여기 내 계획이 있습니다. CMD 라인을 호출하면서 숨길 수있는 Win32 API 기능을 찾을 생각을하고 있습니다. 여기서 또 다른 토론에서, FFMPEG 진행 정보를 얻으려면 로그 파일을 읽어야한다고 생각합니다.

그렇다면 Win32 API에 어떤 기능을 호출해야합니까? 그리고 누구 든지이 작업을 수행하는 더 나은/쉬운 방법을 알고 있습니까? 감사해요

업데이트 :

누구든지 관심이 있으시면 a를 찾습니다 CMD 출력을 VB6 앱으로 가져 오는 방법에 대한 멋진 클래스 모듈, 그리고 위대한 Joacim 외에는 아무도 없습니다. :)

도움이 되었습니까?

해결책

나는 OSX에서 Java에 대해 똑같은 것을 썼습니다. 매우 미니멀리스트 논리 :

  • FFMPEG 출력이 생성 될 때 읽어야합니다.
  • 출력을 라인별로 구문 분석 (CR 및 LF)
    • '기간'라인을 찾아 정수에 시간 값을 초로 저장하십시오. "지속: 00:03:18.48, 시작 : 0.000000, 비트 전송률 : 274 kb/s " (CRLF 종료)
    • 그 시점부터 CR을 구문 분석하고 시간 (초) 완료된 값을 찾으십시오. "프레임 = 2816 fps = 667 q = 11.0 lsize = 13036kb time =187.66 Bitrate = 569.1kbits/s " (CR이 종료, LF 없음)
    • 부서 (시간 / 시간)를하고 백분율이 있습니다!

FFMPEG가 로그 파일에 쓰기가 작동한다고 생각하지 않습니다. on *nix 적어도 FFMPEG는이 출력을 std err에 씁니다. 캡처 해야하는 상태 행에는 선 피드가 없으므로 이전 상태 줄을 덮어 씁니다. 이것은 자신의 코드 내에서 극복 할 수있는 것입니다.

죄송합니다. VB6 부품을 도울 수는 없지만 껍질을 벗기는 프로세스에서 출력을 캡처하는 것이 간단하다고 가정합니다.

다른 팁

첫 번째 실례 내 영어 실례합니다. 저는 스페인어로 말합니다. 답을 찾습니다. 1/먼저 사전 설정을 넣으 면서이 예제 "출력 형식 MPEG2 DVD HQ"가 있습니다.

"-vcodec mpeg2video -vstats_file mfrfile.txt -r 29.97 -s 352x480 -aspect 4 : 3 -b 4000k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -acodec mp2 -AB 192K -AR 48000 -AC 2"

이 명령어는 TXT 파일을 잊지 말고 예제와 같은 사전 설정에 "-vstats_file mitxt.txt"명령을 포함시킬 수 있습니다. 이렇게하면 파일 소스의 폴더 소스에서 Ubicadet 인 보고서를 작성할 수 있습니다. 원하는 경우 이름을 넣을 수 있으며이 예제 로이 txt를 읽을 수 있습니다.

private sub timer1_timer () dim strlastline as string '예를 들어 내 ruta "c : documents and settings gortiz mis documentos file.txt"

strlastline = readlastlineoffile ( "c : documents and settings gortiz mis _ documentos file.txt" ") lst1.additem strlastline end sub

함수 readlastlineoffile (string as string), string dim objfso, ts dim stmpcontents set objfso = createobject ( "scripting.filesystemobject") set ts = objfso.opentextfile (sfilename, 1) stmpcontents = ts.ReadAll ts = tss set ts = close set ts = OBJFSO = 아무것도 설정하지 않습니다

readlastlineoffile = split (stmpcontents, vbcrlf) (ubound (split (split (stmpcontents, vbcrlf)) -1) 끝 기능

LST1이라는 목록 상자에서 결과를 볼 수 있습니다. 비트 전송, 프로세드 프레임, 몇 초 만에 프로세스 시간. 등

문안 인사.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top