모든 인코더가 동일한 것은 아닙니다

모든 인코더가 동일한 것은 아닙니다

Sony Alpha 6400 4k 카메라로 만든 1분 15초 길이의 mp4 영화가 있습니다. 용량은 528MB입니다. 를 이용하여 자르고 싶습니다 ffmpeg. 몇초만 잘라냈는데도 새 영상은많이더 작습니다. 그래서 자르지 않은 원본 파일로 몇 가지 테스트를 시도한 결과 옵션 없이 처리 자체가 훨씬 더 작은 파일을 생성한다는 사실을 발견했습니다.

 ffmpeg -i C0034.MP4 C0034_ffmpeg.MP4

출력 파일은 C0034_ffmpeg.MP4102MB의 공간만 사용합니다. 이는 입력 파일의 약 1/5입니다.없이초당 프레임 수 감소, 해상도 감소 등 파일 크기를 줄일 수 있는 옵션을 적용합니다.

사전 설정

에 따르면문서:

사전 설정은 특정 인코딩 속도 대 압축 비율을 제공하는 옵션 모음입니다.

내 이해를 위해 이것은 다음과 비슷합니다.-mx=X7zip의 스위치: 압축 수준이 높을수록 파일 크기가 작아집니다. 시간은 더 오래 걸리지만 파일 품질에는 영향을 미치지 않습니다.

ffmpeg의 기본값은 중간입니다. 나는 그것을 으로 변경하여 veryslow83,4MB 파일을 얻었습니다. 여기서 동일한 파일은 ultrafast. 이는 가장 강한 압축에서 가장 낮은 압축까지 약 66MB의 눈에 띄는 차이입니다. 그러나 even은 ultrafast여전히 ​​원시 입력 파일보다 379MB 작으므로 기본 medium사전 설정으로는 대부분의 차이점을 설명하지 못하는 것 같습니다.

그만큼일정한 비율 인자(CRF)

그만큼ffmpeg의 동일한 H264 기사CRF를 보여줍니다. 문서에 따르면,대부분의 용도에 권장되는 속도 제어 모드입니다.ffmpeg에서 품질과 파일 크기를 결정하는 데 사용되는 요소인 것 같습니다.

CRF 스케일의 범위는 0~51입니다. 여기서 0은 무손실, 23은 기본값, 51은 최악의 품질입니다.

기본값으로 23을 사용하므로 기술적으로 무손실 출력 파일을 얻을 수 없습니다. 그러나 출력 파일이 훨씬 작지만 입력 파일보다 나빠 보이지 않는 이유도 설명합니다.

17이나 18은 시각적으로 무손실이거나 거의 손실이 없다고 생각하세요. 입력과 동일하거나 거의 동일해 보이지만 기술적으로 무손실은 아닙니다.

이리저리 살펴보면 CRF가 사전 설정보다 파일 크기에 훨씬 더 많은 영향을 미치는 것으로 보입니다(사전 설정은 압축만 처리하고 CRF는 품질을 처리하므로 이는 분명한 것 같습니다). 사전 설정 없이 몇 가지 조합을 시도했습니다(따라서 기본값이 사용됨).

  • -crf 23~> 102MB(기본값)
  • -crf 20~> 189MB
  • -crf 18~> 285MB
  • -crf 17~> 347MB
  • -crf 0~> 2,64GB

첫 번째 테스트에서 나는 이유를 알아냈다고 가정했습니다. CRF는 23과 17 사이에 눈에 띄는 차이가 없더라도(적어도 나에게는 아님) 파일 크기에 큰 영향을 미칩니다.

-crf 0하지만 어떻게 (무손실을 의미하는지) 원본 입력 파일보다 거의 5배 더 큰지 정말 궁금했습니다 . 큰 차이로 인해 출력 파일이 입력 파일보다 품질이 더 좋다고 추측했습니다. 그게 어떻게 가능합니까? ffmpeg출력 파일을 그렇게 크게 만들려면 어떻게 해야 합니까?

답변1

모든 인코더가 동일한 것은 아닙니다

x264는 매우 효율적인 H.264 인코더입니다. 즉, 낮은 비트 전송률에서도 고품질을 출력할 수 있습니다. x264는 덜 효율적인 인코더에 부족할 수 있는 비트를 절약하기 위해 눈을 속이는 멋진 "심리학적" 트릭을 사용합니다.

카메라와 휴대폰의 H.264 인코더는 다른 우선순위(더 적은 리소스, 필요한 최소 인코딩 속도, 배터리 수명 등)로 인해 더 많은 절충안을 만들어야 합니다. 따라서 동일한 형식을 만들더라도 매우 비효율적일 수 있습니다. 즉, 동일한 비트 전송률에서 x264와 일치할 수 없다는 의미입니다.

x264의 기본 설정이 좋아서 일반 사용자는 파일 크기가 크게 줄어들더라도 품질 차이를 느끼지 못하는 경우가 많습니다.

무손실이 엄청나네요

설정은 -crf 0특수 압축 무손실 모드를 사용합니다. 파일 크기를 줄이는 대부분의 방법은 무손실 모드에서 사용할 수 없습니다.

무손실 처리 시 입력 파일 크기를 고려하면 안 됩니다. 입력은 비디오의 기본 구성 요소인 비압축 원시 비디오로 완전히 디코딩됩니다. 원본 비디오는 무손실이지만 압축되지 않았기 때문에 파일 크기가 가장 큽니다. 무손실 인코더는 원시 비디오를 가져와 어느 정도 압축할 수 있지만 여전히 무손실을 유지합니다. ZIP과 비슷하지만 비디오용으로 설계되었습니다. 원시 비디오보다 작지만, 모든 고급 기능을 사용할 수 없기 때문에 일반적인 손실이 있는 H.264만큼 작지는 않습니다. 그렇지 않으면 더 이상 무손실이 아닙니다.

입력보다 더 나은 품질을 갖는 출력을 생성하는 것은 불가능합니다. 품질은 이보다 낮거나 같을 수 있습니다. 형식이나 인코더에 관계없이.

관련 정보