-
ffmpeg로 녹화영상 압축하기 - 2. 일부 옵션별 영상스펙 비교 & 결론IT,컴퓨터/서비스,웹,소프트웨어 2020. 9. 13. 11:00하단 광고는 티스토리가 임의 삽입하여 노출되고 있습니다728x90
지난번 빌드환경 글 정리하고 한주가 지났네요.
먼저 정리하려던게 요즘 집 밖으로 못나가니 진척이 없어서, 그게 밀리니 이 글 정리도 밀렸습니다.
계속 미루다가는 한주 더 지나가버릴것만 같아서 이제라도 정리하네요.
지난번에 빌드한 ffmpeg 환경은 libx264를 사용할 수 있게 설정했습니다.
압축률은 최신 코덱인 x265가 더 나은 모양이지만, 호환성이나 현 작업PC 성능 등을 생각해서 x264로 잡고 인코딩 옵션에 대한 연구를 하기로 합니다.
중점적으로 본 옵션은 libx264 에서 사용 가능한 preset 과 crf 입니다.
preset 은 '한 프레임을 만드는 데에 얼마나 CPU 자원을 사용할지' (느려질수록 같은 비트레이트에서 더 나은 품질)
crf 는 '인코딩시 사용되는 품질 기준값' (가변 비트레이트)
정도의 개념이라고 보시면 될듯 합니다.
자세한 설명은 ffmpeg H264 인코딩 가이드 문서를 참고하시길.
가이드 문서에 따르면 preset의 기본값은 medium 이며, ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow 가 있습니다.
crf는 기본값이 23이며, 0에서는 무손실, 17-18에서 눈에 보이기엔 무손실(기술적으로는 손실)이고 8bit(일반적인 경우)에서는 51(가장 나쁜 품질)까지 설정할 수 있다네요.
여기서 모든걸 테스트할 엄두는 안나고, 기본값이라는게 허투루 설정됐을 리 없다 보고 기본값 주변 값들을 추렸습니다.
preset fast, medium, slow / crf 20 ~ 24.
자, 그럼 작업해 봅시다.
a. 인코딩 PC 스펙
-CPU: intel i5-2500 (3.30GHz) 4 core 4 thread
-RAM: 12GB-OS: Windows10 Pro 64bit
b. ffmpeg 버전
-ffmpeg: N-98870-g6953ab0cec-g2a9b934675+4 (8/24 git 소스 다운로드 및 빌드)
c. 소스파일 스펙
-video: 720x480, h264, 15,886kb/s, 29.96 fps, 40m 21s
-audio: stereo, 48kHz, mp3, 255 kb/s
-size: 4,586.91MB
d. 테스트 방식
ffmpeg -i (원본파일) -c:v libx264 -preset (preset) -crf (crf) -c:a copy -profile:v high -level 4.2 test_h264_(preset)_(crf).mp4
위와 같이 preset 과 crf만 변경해서 인코딩을 진행합니다.
profile 과 level 4.2는 iPad 등에서 재생 가능하도록 도와주고, -c:a copy로 오디오는 인코딩하지 않고 원본을 그대로 가져옵니다.
그리고 작업결과가 아래와 같습니다.
e. 결과(preset 별)
이렇게만 보면 어떤가 싶기도 합니다.
다른 기준으로 보겠습니다.
f. 결과(crf 별)
같은 crf 하에서는 비트레이트가 비슷비슷하게 나오는데, fast가 살짝 높게 나오는 경우가 많네요.
g. 결과(비트레이트 높은순)
그래서, 나은 품질로 뽑혔을 것으로 보이는 출력물은 slow의 crf 20이지만, fast와 비트레이트 차이는 거의 안나면서 속도는 3배 느리죠.
h. 결과(인코딩 속도 높은순)
이렇게 놓고 보면, fps가 80 이상인건 fast가 대부분이네요.
i. 결론
제 경우는 '버릴 예정인 비디오 테이프를 디지털화' 하면서 나온 파일의 용량 부담을 줄이기 위해서가 목적인지라
-현재 가지고 있는 자원(i5-2500)으로 효과적 작업이 가능하고
-그렇게까지 많은 품질 손실 없이 인코딩이 가능할 것으로 보이는
preset fast + crf 20 옵션을 사용하기로 했습니다.
위 케이스는 한 파일의 테스트지만, 감소비율이 비슷하다고 보면 대략 35GB 정도로 줄어들겠네요.
물론 각 영상의 움직임과 같은 변수에 따라 변화가 크겠지만 말입니다. 그건 ffmpeg가 내부적으로 골머리 썩겠죠(?)
이제 시간 날때 손 많이 안대도 되게 스크립트 짜서 일괄 변환을 걸어야겠습니다.
이참에 통으로 되어있는 영상들 낱개 에피소드로 분리도 해놓고.
그럼 주말 지나고 다음 글에서 뵙겠습니다.
P.S
검색하다 보니, 저보다 옵션별 인코딩 테스트를 더 세세하게 하신 분이 있어 링크 남겨둬봅니다.
관심있으시면 둘러보시길. 제쪽 테스트 할때 조금 참고하기도 했습니다.
https://write.corbpie.com/ffmpeg-h264-preset-crf-comparison-2020-pt1/
http://write.corbpie.com/ffmpeg-h264-preset-crf-comparison-2020-pt2/
'IT,컴퓨터 > 서비스,웹,소프트웨어' 카테고리의 다른 글
conoha VPS 납부방식 전환 및 서버 업그레이드 (0) 2021.05.13 radiko 녹음 스크립트 수정 과정 기록 (0) 2020.12.10 conoha 네트워크 속도제한에 걸리다 (0) 2020.09.08 ffmpeg로 녹화영상 압축하기 - 1. Windows10 빌드환경 구축(media autobuild suite) (0) 2020.09.04