본문 바로가기

Digital Arts/Videos

FFMPEG으로 화질을 유지하며 동영상 용량 줄이는 법

용량이 큰 동영상 파일의 용량을 최대한 줄이고 싶지만 화질을 양보하고 싶지 않다.

이럴 때 FFMPEG을 활용하면 libx264 및 libx265 코덱과 CRF(Constant Rate Factor) 옵션을 이용해 간편하게 압축할 수 있다.

 

이 글은 FFMPEG을 이미 쓸 수 있다 전제 하에 썼다.

FFMPEG을 모른다면..

https://ffmpeg.org/download.html
에서 다운로드 받고 설치한 뒤 기본 사용법을 익힌 후

https://scudmissile.co.kr/354 에서 명령 프롬프트 환경 변수 추가 작업을 하고 이글로 돌아오면 된다.

 

FFMPEG과 코덱 소개

FFMPEG은 오픈소스 멀티미디어 프레임워크로, 다양한 형식의 오디오 및 비디오를 처리할 수 있다. 그중에서도 libx264와 libx265 코덱은 각각 H.264와 H.265(HEVC) 인코딩을 지원한다. 일반적으로 1080p 이하의 해상도에서는 H.264, 그 이상(2.5K나 4K 등)에서는 H.265를 사용하는 것이 효율적이다.

(참고 링크 : 본 블로그의 H.264와 H.265의 화질 비교 글)

 

CRF 옵션이란?

CRF(Constant Rate Factor)는 비트레이트를 고정하는 방법 대신, 화질을 기준으로 압축률을 조정하는 손실 압축 방식이다. 값이 0일 때 무손실이며, 값이 낮을수록 화질이 좋고 파일 크기가 커지며, 값이 높을수록 화질이 낮고 파일 크기가 작아진다.

 

  • H.264(libx264)의 CRF 범위: 0(무손실) ~ 51(최저 화질)
    • 일반적으로 CRF 23이 기본값이며, 18~28 사이에서 조절하면 좋다.
    • CRF 17이 사람 눈으로는 차이를 구분할 수 없을 정도의 화질을 유지하는 값이다.
  • H.265(libx265)의 CRF 범위: 0(무손실) ~ 63(최저 화질)
    • libx264와 값이 약간 다르다.
    • 기본값은 CRF 28이며, 20~30 사이에서 적절한 값을 선택한다.
    • CRF 18 정도가 사람 눈으로는 차이를 구분할 수 없을 정도의 화질을 유지하는 값이다.

 

FFmpeg을 이용한 동영상 압축 명령어

1. H.264 코덱(libx264) 사용 예시

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

 

2. H.265 코덱(libx265) 사용 예시

ffmpeg -i input.mp4 -vcodec libx265 -crf 28 -preset medium -acodec aac -b:a 128k output.mp4

 

3. 추가 옵션 설명

  • -preset 옵션: 속도와 압축률을 조절한다.
    • ultrafast, superfast, veryfast, faster, fast, medium(기본값), slow, slower, veryslow
    • 속도가 빠를수록 압축 효율이 낮고, 느릴수록 압축률이 높다. 하지만 거의 차이는 없다.
  • -b:a 128k 옵션: 오디오 비트레이트를 128kbps로 설정한다.
  • 사실 오디오는 용량에서 차지하는 비율이 매우 작으므로 굳이 압축할 필요도 없을 것이다. 이럴 때는 -acdoec copy 옵션으로 오디오를 그대로 유지할 수 있다.

실제로 해봤다(오디오가 없는 동영상 파일이었다)

 

 

결론

동영상의 화질과 용량을 균형 있게 조절하려면, 테스트를 통해 적절한 CRF 값을 찾는 것이 중요하다. 일반적으로 H.264는 CRF 23, H.265는 CRF 28이 무난한 선택이다. 나는 화질을 최대한 유지하고 싶지만 인코딩 시간도 절약하는 것을 원하기에 H.264는 CRF 17, preset fast를 사용하고, H.265는 CRF 18, preset superfast를 사용한다.

 

 

참고 링크

https://slhck.info/video/2017/02/24/crf-guide.html

 

CRF Guide (Constant Rate Factor in x264, x265 and libvpx)

What is the Constant Rate Factor? The Constant Rate Factor (CRF) is the default quality (and rate control) setting for the x264 and x265 encoders, and it’s also available for libvpx. With x264 and x265, you can set the values between 0 and 51, where lowe

slhck.info

 

https://write.corbpie.com/ffmpeg-h264-h265-preset-crf-comparison-2020-finale/

 

FFmpeg h264 & h265 preset crf comparison 2020 (finale)

Comprehensive guide comparing FFmpeg H.265 HEVC with H264, using all presets with CRF values 20 through to 30.

write.corbpie.com

 


loading