ffmpeg를 더 조용하고 덜 장황하게 만들려면 어떻게해야합니까?


117

기본적으로 ffmpeg는 빌드 할 때, 빌드하는 방법, 코덱 등의 모든 로타 메시지를 stderr에 보냅니다.

어떻게 더 조용하게 만들 수 있습니까?

나는 시도했다 -v 0(그리고 -v 10문서 Set the logging verbosity level.는 입력 범위가 무엇인지 표시하지 않고 아늑하게 말했기 때문에 )-여전히 조용하지는 않다.

시도했지만 -loglevel quiet여전히 조용하지 않습니다.

나는 "아무런 결과도 없다"가 아니라 "조용한"을 찾고 있다고 언급해야한다. 오류가 있으면보고 싶지만 ffmpeg의 구성에 대해들을 필요는 없습니다. 단일. 시각.


14
ffmpeg는 분명히 '개발자, 개발자'종류의 프로그램 중 하나입니다.
digitxp

1
사용하십시오 -loglevel quiet -stats.
fredsbend

또는 -loglevel error -stats"복구 할 수있는 오류 포함"오류가 표시되고를 사용 -stats하면 인코딩 진행률 및 통계 행이 인쇄됩니다. -loglevel에서 error로 변경하면 warning조금 더 장황하지만 한 터미널 페이지에 편안하게 맞습니다.
mattst

답변:



117

테스트하지는 않았지만 맨 페이지에 수행 할 옵션이 있습니다.

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

이론상 심각한 오류 만 기록되도록해야합니다.


5
조차도 -loglevel panic나에게만 출력을 약간만 줄입니다. 버전 정보, 스트림 매핑, 구성 옵션 (및 진행 정보)까지도 인쇄합니다. 최신 svn 트렁크의 자체 컴파일 버전이라고 언급해야 할 수도 있습니다.
codeling

7
비트 버킷으로 파이프 :> / dev / null 2> & 1
rogerdpack

2
대부분의 프로그램에서 작동하는 @rogerdpack이지만 ffmpeg는 모든 텍스트 출력을 stdout이 아닌 stderr에 넣습니다 (이를 수행하면 인코더 출력을 다른 프로그램으로 파이프 할 수 있습니다). stdout을 / dev / null로 리디렉션합니다 유용한 어떤 것도하지 마십시오.
evilsoup

20
-hide_banner상세 수준을 낮추는 것 외에도 사용 하는 것이 좋습니다.
Makaveli84

5
언급 된 모든 것 외에도 -nostats는 진행 출력을 비활성화합니다.
Ely

56

여기 소스 코드의 로그 레벨이 있습니다 (FFmpeg 버전 0.10.2.git)

const struct { const char *name; int level; } log_levels[] = {
        { "quiet"  , AV_LOG_QUIET   },
        { "panic"  , AV_LOG_PANIC   },
        { "fatal"  , AV_LOG_FATAL   },
        { "error"  , AV_LOG_ERROR   },
        { "warning", AV_LOG_WARNING },
        { "info"   , AV_LOG_INFO    },
        { "verbose", AV_LOG_VERBOSE },
        { "debug"  , AV_LOG_DEBUG   },
    };

5
URL은 시간이 지남에 따라 변경되는 경향이 있지만 답변의 출처로 포함하는 것이 좋습니다. 예를 들어, 현재이 내용ffmpeg.org/ffmpeg.html#toc-Generic-options에 설명되어 있으며이 URL이 변경 되더라도 독자 는 문서를 어디에서 찾아야하는지 알게됩니다.
Fr0zenFyr

19

나는 다음과 같은 성공을 거두었 다 (기록 시점에 최신 FFMPEG 버전).

-nostats -loglevel 0

그런 다음 사용 시나리오에서 절대적으로 조용합니다.


ffmpeg 3.2의이 솔루션에 만족
Bernhard Döbler

-nostats내가 찾던 것이 었습니다. 진행 출력을 억제합니다 (예 : 비 터미널 컨텍스트에서 유용).
jox

슬프게도 -nostats배너를 숨 깁니다. ffmpeg는 -show_banner옵션이 필요합니다 .)
mgutt

18
ffmpeg -loglevel error [other commands]

배너를 숨기고 오류 만 표시합니다. -loglevel warning경고를 보려면 사용 하십시오.

Ffmpeg 3.0.2에서 테스트되었습니다.

로부터 문서 :

-loglevel [반복 +] loglevel | -v [반복 +] 로그 레벨

라이브러리가 사용하는 로깅 레벨을 설정하십시오. "repeat +"를 추가하면 반복 된 로그 출력이 첫 번째 줄로 압축되어서는 안되고 "마지막으로 n 번 반복 된 메시지"줄은 생략됩니다. "반복"도 단독으로 사용할 수 있습니다. "반복"이 단독으로 사용되고 사전 로그 수준이 설정되지 않은 경우 기본 로그 수준이 사용됩니다. 여러 로그 수준 매개 변수가 제공되면 '반복'을 사용해도 로그 수준이 변경되지 않습니다. loglevel은 문자열 또는 다음 값 중 하나를 포함하는 숫자입니다.

'조용함, -8'

아무것도 보여주지 마십시오. 조용히하세요

'공황, 0'

치명적인 오류 만 표시하여 프로세스 중단 및 실패와 같은 프로세스 중단을 초래할 수 있습니다. 이것은 현재 아무것도 사용되지 않습니다.

'치명적인, 8'

치명적인 오류 만 표시하십시오. 이것은 프로세스가 절대적으로 계속 될 수없는 오류입니다.

'오류, 16'

복구 할 수있는 오류를 포함하여 모든 오류를 표시하십시오.

'경고 24'

모든 경고 및 오류를 표시하십시오. 부정확하거나 예상치 못한 이벤트와 관련된 메시지가 표시됩니다.

'info, 32'

처리하는 동안 유익한 메시지를 표시하십시오. 이것은 경고 및 오류에 추가됩니다. 이것이 기본값입니다.

'verbose, 40'

info더 자세한 정보를 제외하고 와 동일합니다 .

'디버그, 48'

디버깅 정보를 포함한 모든 것을 보여줍니다.

'추적, 56'

기본적으로 프로그램은 stderr에 로그하며, 터미널에서 색상을 지원하는 경우 오류 및 경고를 표시하는 데 색상이 사용됩니다. 로그 색상은 환경 변수를 설정 해제 할 수 있습니다 AV_LOG_FORCE_NOCOLOR하거나 NO_COLOR, 또는 환경 변수를 설정 강제 할 수 있습니다 AV_LOG_FORCE_COLOR. 환경 변수 사용 NO_COLOR은 더 이상 사용되지 않으며 다음 FFmpeg 버전에서 제거됩니다.


5

다음은 macOS에서 나를 위해 일했습니다.

ffmpeg -v quiet

또는 진행 상황 만 보려면 :

ffmpeg -v quiet -stats

바로 내가 찾던 것입니다. 스크립트에서 ffmpeg를 사용하고 있으며 작동하는지 확인해야하지만 입력 및 출력 스트림 등에 대한 모든 정보가 필요하지는 않습니다.
stib

3

grep을 통해 stderr를 파이프 할 수 있습니다. 예를 들어, 구성 정보를 제거하려는 경우 다음과 같이 수행 할 수 있습니다.

% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration:

그럴 필요가 있다고 생각합니다 ffmpeg … 2>&1 >/dev/null | grep ….
Scott

0

이 방법은 조금 저렴하지만 추가 >/dev/null 2>&1하면 쉘에서 ffmpeg를 자동으로 유지할 수 있습니다.

ffmpeg -f x11grab -y -r 24 -s 800x600 -i :0.0+1366,100 -f oss -i /dev/dsp3 -sameq ./out.avi >/dev/null 2>&1

bash 출력에 대한 추가 정보


14
ffmpeg는 한 걸음 앞서서 구성 정보와 실제 오류를 모두 stderr에 출력합니다.
blahdiblah

0

ffmpeg -loglevel error -hide_banner -nostats

오류 만 있으면됩니다.

나는 개인적으로이 최고를 좋아한다;

ffmpeg -loglevel warning -hide_banner -stats

경고와 오류 만 제공하고 작업 진행률도 보여줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.