어떤 H.264 / H.265 비디오 압축 매개 변수가 더 나은 압축으로 DVD와 동등한 품질을 제공합니까?


11

나는 비디오를 MP4 파일로 변환하여 하드 드라이브에 저장하여 비디오를 유지하려고하는 동안 제거하려고하는 DVD 비디오 디스크 상자를 가지고 있습니다.

DVD 표준 MPEG2보다 최신 H.264 AVC 및 H.265 HEVC 압축 알고리즘의 우수성을 고려하여 DVD 원본 품질의 ~ 99 %를 절약하면서 비디오를 압축하여 하드 드라이브 공간을 절약하고자합니다.

  • H.264 (FFMPEG + libx264) 압축 매개 변수
  • H.265 (FFMPEG + libx265) 압축 매개 변수

목표를 달성하기 위해 사용해야합니까?

매개 변수로 CBR / CRF 값, 사전 설정 (매우 느리게 / 위약 없음), 플래그 등을 의미합니다.

추신 : 나는 오래된 하드웨어 디코더 칩에 의존하는 오래된 장치를 포함한 모든 장치에서 파일을 올바르게 재생 -pix_fmt yuv420p하고 사용하는 경우를 제한하고 싶습니다 -profile:v baseline -level 3.0. -g저속 및 지연 시간이 긴 미디어 사용을 촉진하기 위해 매개 변수를 사용하여 I 프레임 주파수를 약간 증가시키는 것도 바람직합니다.

HEVC의 경우 하드웨어 지원 H.265를 지원하는 장치에서 하드웨어 가속 재생을 원활하게하는 매개 변수를 선호하지만 하드웨어 가속 H.265를 제공하는 장치를 보지 못했기 때문에이 제약 조건에 중점을 두려는 것은 아닙니다. 아직 전혀 디코딩하지 못했습니다.

답변:


14

이를 위해서는 항상 최신 ffmpeg 버전을 사용해야하며 직접 컴파일하는 것이 좋습니다 . 오디오 인코딩을 위해 최신 libx265 및 libfdk-aac에 액세스 할 수 있습니다.

또한 ~ 10MBit / s DVD에서 H.264 비디오의 경우 약 1-2MBit / s로, H.265 비디오의 경우 0.5–1MBit / s로 이동하면 데이터 전송 속도가 크게 떨어집니다. 아래 단계에서 품질을 변경하면 비트 전송률에 영향을 줄 수 있지만 여전히 데이터 감소는 중요합니다.

H.264

품질 / 속도 제어를 위해 일정한 비트 전송률이 아닌 libx264에서 CRF 모드 를 사용하려고합니다 . CRF를 사용하면 원래 비디오 해상도 또는 복잡성에 관계없이 평균 품질이 유지됩니다. 일정한 비트 전송률은 전송 매체 (예 : 하드 드라이브 속도, 인터넷 처리량)에 의해 제한을받는 경우에만 유용합니다.

CRF 값을 선택하는 것은 까다로운 부분입니다. 출력을보아야합니다. libx264 (23)의 기본값은 크기와 품질 사이에 상당히 좋은 균형을 제공합니다. 그러나 원본 소스가 이미 압축되어 있고 ( Blu-ray에 비해 품질이 좋지 않은 경우) CRF를 20과 같이 조금 낮게 변경하려고 할 수 있습니다. 이렇게하면 필요한 비트 전송률이 약 3 분의 1로 증가합니다. .

대기 시간에 따라 사전 설정을 선택하십시오. slow여기서 좋은 가치 인 것 같습니다.

ffmpeg -i input \
-c:v libx264 -crf 20 -pix_fmt yuv420p \
-x264-params keyint=240:min-keyint=20 \
-preset:v slow -profile:v baseline -level 3.0 \
-c:a libfdk_aac -vbr 4 \
output.mp4

libfdk-aac을 사용할 수없는 경우 내장 ffmpeg AAC 인코더를 사용할 수 있습니다. -c:a aac -strict experimental -b:a 128k대신 사용하십시오 -c:a libfdk_aac -vbr 4.

H.265

연구에 따르면 HEVC를 사용하면 H.264에 비해 최대 74 %의 비트 전송률 절감 효과를 얻을 수 있습니다. 이것은 Ultra-HD 시퀀스의 주관적인보기 데이터를 기반으로합니다. 물론, 그것은 소스 컨텐츠의 시간적 복잡성에 의존하며, 저장되는 데이터의 양은 코딩하기 어려운 시퀀스만큼 높지 않을 것이다. 어느 쪽이든 50 %의 데이터 축소가 절대적으로 가능 하다고 안전하게 말할 수 있습니다.

libx265의 기본 CRF는 28입니다. 동일한 소스 컨텐츠를 사용하면 CRF 23의 libx264에 비해 비트 전송률이 약 절반이됩니다. 실제 비트 전송률에 관계없이, 즉 H.264 버전이 1.5MBit / s 인 경우, 그러면 H.265는 약 750kBit / s를 사용하지만 다른 시퀀스의 경우 750kBit / s 대 350kBit / s입니다. DVD-PAL 해상도에서 몇 가지 시퀀스로 실행했으며 품질면에서 차이를 알 수 없었습니다.

ffmpeg -i input \
-c:v libx265 -pix_fmt yuv420p \
-x265-params crf=28:keyint=240:min-keyint=20 \
-preset:v slow \
-c:a libfdk_aac -vbr 4 \
output.mp4

자세한 내용은 다음 관련 자료를 참조하십시오.


좋은 답변 감사합니다. 그런데 keyint는 실제로 무엇을 의미합니까?
Ivan

1
keyint에서 x264 / x265 즉 디코더가 리프레시 할 수있는 키 프레임 간격 IDR 프레임들 사이의 간격이다. 그 사이에, 예를 들어 장면 컷이 발생할 때 키 프레임이 아닌 I- 프레임이있을 수 있습니다. -g내가 실수하지 않으면 매개 변수 와 같습니다 .
slhck

BTW, @slhck, 당신의 대답에 놀란 것-AAC 인코딩 라이브러리 선택에 대한 관심. 나는 그것들이 거의 동일하다고 생각하고 거의 또는 전혀 차이를주지 않았다. 오디오 부분에서 일이 간단하다는 것 (비트 레이트를 선택하고 가십시오 .MP3, AAC 및 Vorbis와 같은 모든 주요 손실 코덱은 거의 또는 정확하게 소리를냅니다) 128kbps 이상에서 동일). 실제로 libfdk-aac와 일반 aac간에 눈에 띄는 차이가 있다는 것을 의미합니까?
Ivan

1
@Ivan Zeranoe 빌드는 분명히 -c:a aac -strict experimental내 대답에 표시된대로 할 수 있어야합니다 . 그리고 나는 Windows에서 그것을 구축하려고 시도하지 않을 것에 동의합니다.
slhck

2
@Ivan (1st comment) : ffmpeg-wiki 참조 : "높은 품질에서 낮은 품질로 생성 : libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1AAC에만 해당 : (사용할 수있는 인코더가 3 개인 약간 혼란 스럽기 때문에) : libfdk_aac > aac > libfaac> = 부호는 크거나 같음을 의미합니다. 품질."
Golar Ramblar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.