새로운 코덱 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 옵션은 이고 -loglevel
x25 옵션은 입니다 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
원하는 대로 됩니다.