bash: ffmpeg libx265가 출력을 차단합니다.

bash: ffmpeg libx265가 출력을 차단합니다.

새로운 코덱 x265(libx265)를 사용하여 내 비디오 컬렉션을 인코딩하고 싶습니다.

나는 이 목적을 위해 Linux에서 멋진 bash 스크립트를 만들었고 일반적으로 잘 작동합니다! 그런데 뭔가 이상한 점이 있습니다.

ffmpeg의 출력이 내 방식대로 에코되는 것을 비활성화합니다. x264("이전")를 사용하면 모든 것이 잘 작동합니다. 하지만 x265를 사용하면 항상 터미널에 다음과 같은 출력이 표시됩니다.

x265 [info]: HEVC encoder version 1.7
x265 [info]: build info [Linux][GCC 5.1.0][64 bit] 8bpp
x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
x265 [info]: Main profile, Level-2.1 (Main tier)
x265 [info]: Thread pool created using 2 threads
x265 [info]: frame threads / pool features       : 1 / wpp(5 rows)
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
x265 [info]: ME / range / subpel / merge         : hex / 57 / 2 / 2
x265 [info]: Keyframe min / max / scenecut       : 25 / 250 / 40
x265 [info]: Lookahead / bframes / badapt        : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb / refs: 1 / 1 / 0 / 3
x265 [info]: AQ: mode / str / qg-size / cu-tree  : 1 / 1.0 / 64 / 1
x265 [info]: Rate Control / qCompress            : CRF-28.0 / 0.60
x265 [info]: tools: rd=3 psy-rd=0.30 signhide tmvp strong-intra-smoothing
x265 [info]: tools: deblock sao

ffmpeg를 사용하여 비디오를 인코딩하는 방법은 다음과 같습니다.

ffmpeg -i /input/file -c:v libx265 -c:a copy -loglevel quiet /output/file.mp4 <>/dev/null 2>&1

나는 생각했다

<>/dev/null 2>&1

그리고

-loglevel quiet

그렇게 하겠지만 분명히 내가 틀렸어요.

이 문제를 어떻게 해결할 수 있나요?

당신의 도움을 주셔서 감사합니다!

답변1

해결책

다음을 추가해야 합니다.추가의다음과 같은 매개변수-x265-params log-level=xxxxx

ffmpeg -i /input/file -c:v libx265 -c:a copy -loglevel Quiet-x265-params loglevel=quiet\
        /output/file.mp4 <>/dev/null 2>&1

FFmpeg 옵션은 이고 -loglevelx25 옵션은 입니다 log-level.-x265 log참조  ;level명령줄 옵션문서.


설명하다

사용자가 작성하는 FFmpeg 명령~해야 한다이미 작업했습니다(참조:ffmpeg 문서) 그러나 FFmpeg는 FFmpeg에 사용하도록 지시한 로그 수준을 사용하도록 x265 인코더에 지시하지 않는 것 같습니다.

따라서 전체 FFmpeg 명령이 자동으로 실행되기를 원한다고 가정하면(즉, 기본 FFmpeg 프로그램 및 x265 인코더의 메시지 억제) 로그 수준 옵션을 명시적으로 설정해야 합니다.

마찬가지로 다음과 같은 FFmpeg 명령이 있는 경우:

ffmpeg -loglevel 오류 -stats -i "inputfile.xyz" -c:v libx265 -x265-params매개변수 1=:매개변수 2=출력 파일.xyz

log-level=error다음과 같이 x265 매개변수 목록에 이 옵션을 추가 할 수 있습니다 .

ffmpeg -loglevel 오류 -stats -i "inputfile.xyz" -c:v libx265 -x265-params loglevel=오류:매개변수 1=:매개변수 2=

답변2

<>/dev/null에는 표준 입력과 출력만 연결 하고 적용합니다 /dev/null.2>&1뒤쪽에 <>/dev/null, 실제로는 아무것도 수행하지 않습니다.

으로 변경하면 >/dev/null 2>&1 원하는 대로 됩니다.

관련 정보