반응형
아래는 FastFlix에서 제공하는 인코딩 옵션에 대한 상세한 설명입니다. 이 옵션들은 x264 또는 x265와 같은 코덱의 매개변수를 조정하여 인코딩 품질, 비트레이트 효율성, 인코딩 속도에 영향을 미칩니다.
1. Tier = Main, High
- 설명
Tier는 HEVC(H.265) 표준에서 비트스트림의 복잡도를 나타냅니다.- Main: 기본 프로파일로 대부분의 디코더에서 지원됩니다. 일반적인 사용에 적합.
- High: 더 높은 복잡도와 더 많은 처리 자원을 요구하지만, 품질과 효율성이 향상됩니다.
- 사용 예
- 일반적인 콘텐츠: Main
- 고화질 콘텐츠: High
2. Adaptive Quantization (AQ) = Off, Spatial, Temporal
- 설명
Adaptive Quantization(AQ)는 장면의 밝기와 움직임에 따라 비트레이트를 동적으로 할당하는 기능입니다.- Off: AQ 비활성화 (권장하지 않음, 비효율적인 압축 가능).
- Spatial: 화면의 밝기 및 디테일 수준에 따라 공간적으로 비트레이트 조정.
- Temporal: 장면 간 움직임을 기준으로 비트레이트 조정.
- 사용 예
- 움직임이 많은 콘텐츠: Temporal
- 정적인 장면이 많은 콘텐츠: Spatial
3. AQ Strength = Auto, 1~15
- 설명
AQ Strength는 Adaptive Quantization의 강도를 설정합니다.- Auto: 자동으로 적절한 강도를 설정.
- 1~15: 값이 높을수록 더 강력하게 비트레이트를 조정.
- 사용 예
- 일반적으로 Auto로 설정. 필요 시 강도를 1~4 범위에서 미세 조정.
4. VBR Target = Auto, 0~51
- 설명
Variable Bit Rate(VBR)에서 목표 품질을 설정합니다. 낮은 값일수록 품질이 높아지고, 파일 크기가 커질 수 있습니다.- Auto: 자동으로 목표 품질 설정.
- 0~51: 0은 최고 품질, 51은 가장 낮은 품질. 일반적으로 18~24 권장.
- 사용 예
- 고품질: 18~20
- 일반 품질: 22~24
- 낮은 품질(용량 절약): 25 이상
5. Init Q (I, P, B 각각 0~51)
- 설명
초기 양자화(Quantization) 매개변수로, 프레임 타입별로 설정합니다.- I (Intra Frame): 장면의 시작 프레임.
- P (Predicted Frame): 예측된 프레임.
- B (Bi-predictive Frame): 양방향 참조 프레임.
- 값이 낮을수록 품질이 높고 파일 크기가 커짐.
- 사용 예
- 일반적으로 기본값 사용. 필요하면 I > P > B 순으로 값 설정.
6. Min Q / Max Q
- 설명
양자화 파라미터(QP)의 최소값과 최대값을 설정합니다.- Min Q: 프레임이 얻을 수 있는 최소 품질. 값이 낮을수록 화질 우선.
- Max Q: 프레임이 허용되는 최대 품질 손실. 값이 높을수록 압축률 증가.
- 사용 예
- 일반적으로 Min Q: 10
20, Max Q: 4050 설정.
- 일반적으로 Min Q: 10
7. Motion Vector Accuracy = Auto, Q-pel, Half-pel, Full-pel
- 설명
움직임 벡터의 정확도를 설정하여 움직임 예측의 정밀도를 제어합니다.- Auto: 기본값으로 설정.
- Q-pel: 가장 정밀, 픽셀의 1/4 단위까지 계산.
- Half-pel: 픽셀의 1/2 단위 계산.
- Full-pel: 픽셀 단위로 계산, 속도가 빠르지만 효율이 낮음.
- 사용 예
- 고화질 콘텐츠: Q-pel 또는 Half-pel.
- 속도 중시: Full-pel.
8. Ref Frames = Auto, 0~6
- 설명
각 프레임에서 참조할 수 있는 이전 프레임의 개수를 설정합니다.
값이 높을수록 압축 효율이 향상되지만 디코딩 복잡도가 증가합니다. - 사용 예
- 일반적으로 3~4.
- 고정된 장면에서는 5~6.
9. B Frames = Auto, 0~7
- 설명
B-프레임은 양방향으로 참조되는 프레임입니다.
값이 높을수록 압축 효율이 증가하나, 인코딩 시간이 길어집니다. - 사용 예
- 일반적으로 3~4 추천.
- 고정된 장면에서는 5~7.
10. Level = Auto, 1.0~6.2
- 설명
비디오 스트림의 프로파일 수준을 지정합니다.
값이 높을수록 더 높은 해상도와 비트레이트를 지원합니다. - 사용 예
- Full HD: 4.1
- 4K UHD: 5.1 이상.
11. B Ref Mode = Disabled, Each, Middle
- 설명
B-프레임 참조 동작을 설정합니다.- Disabled: B-프레임 참조 비활성화 (비효율적).
- Each: 모든 B-프레임이 참조에 사용됨 (고효율).
- Middle: 중간 B-프레임만 참조에 사용 (균형).
- 사용 예
- 고화질 콘텐츠: Each.
- 빠른 인코딩: Middle.
1. --part-size-min
최소 루마 코딩 블록 크기 지정
- 설명: 코딩 블록(영상의 기본 단위)의 최소 크기를 지정합니다.
작은 크기의 블록을 사용하면 더 세밀한 영역별 비트 할당이 가능하지만, 인코딩 시간이 길어지고 복잡성이 증가합니다. - 값:
- 0 (auto): 자동으로 블록 크기를 설정합니다. 콘텐츠에 따라 인코더가 적절한 값을 선택합니다.
- 4, 8, 16, 32, 64: 최소 블록 크기를 직접 지정합니다.
- 4는 가장 작은 블록 크기이며, 움직임이 많고 복잡한 콘텐츠에 유리합니다.
- 64는 가장 큰 블록 크기이며, 정적인 콘텐츠에 적합합니다.
최대 압축 권장값: 4
- 작은 블록 크기는 압축 효율을 높이지만 인코딩 시간이 크게 증가할 수 있습니다.
2. --part-size-max
최대 루마 코딩 블록 크기 지정
- 설명: 코딩 블록의 최대 크기를 설정합니다.
큰 블록을 사용할수록 인코딩 속도가 빨라지지만, 세밀한 압축이 어려워질 수 있습니다. - 값:
- 0 (auto): 인코더가 자동으로 최대 블록 크기를 결정합니다.
- 4, 8, 16, 32, 64: 최대 블록 크기를 직접 지정합니다.
- 64는 가장 큰 블록 크기이며, 고정적인 배경이 많은 콘텐츠에 적합합니다.
- 4는 가장 작은 블록 크기이며, 복잡한 움직임이 많은 콘텐츠에 적합합니다.
최대 압축 권장값: 64
- 최대 크기를 크게 설정하면 정적인 영역에서 효율적인 압축이 가능합니다.
3. --tile-columns
타일 열의 개수 지정
- 설명: 프레임을 가로 방향으로 나누는 타일의 개수를 설정합니다.
타일은 병렬 처리 속도를 높이고 디코딩 효율성을 개선하지만, 너무 많이 설정하면 압축 효율이 떨어질 수 있습니다. - 값:
- 0 (auto): 자동으로 타일 열의 개수를 결정합니다.
- 1, 2, 4, 8, 16, 32, 64: 타일 열의 개수를 수동으로 설정합니다.
- 1은 타일을 사용하지 않습니다(전체 프레임을 하나의 타일로 간주).
- 큰 해상도(4K 이상)에서는 4~8 정도의 타일이 권장됩니다.
최대 압축 권장값: 1
- 타일을 사용하지 않으면 압축 효율이 극대화되지만, 디코딩 성능은 낮아질 수 있습니다.
4. --tile-rows
타일 행의 개수 지정
- 설명: 프레임을 세로 방향으로 나누는 타일의 개수를 설정합니다.
타일 행은 타일 열과 동일한 역할을 하며, 병렬 처리와 압축 효율 간의 균형을 맞추는 데 사용됩니다. - 값:
- 0 (auto): 자동으로 타일 행의 개수를 결정합니다.
- 1, 2, 4, 8, 16, 32, 64: 타일 행의 개수를 수동으로 설정합니다.
최대 압축 권장값: 1
- 타일을 사용하지 않으면 압축 효율이 극대화됩니다.
5. --max-temporal-layers
계층화된 인코딩에서 최대 시간 계층 설정
- 설명: 계층화된 코딩 구조에서 시간 계층의 수를 지정합니다.
시간 계층은 프레임 간의 참조 구조를 조정하여 효율성을 높이는 데 사용됩니다. - 값:
- 숫자가 클수록 계층이 많아지며, 더 세밀한 참조 구조를 제공합니다.
- 숫자가 작을수록 단순한 참조 구조를 사용합니다.
최대 압축 권장값: 3~4
- 계층이 너무 많으면 복잡성이 증가하여 디코딩 성능에 영향을 미칠 수 있습니다.
- 일반적으로 3~4는 압축 효율과 디코딩 성능 간의 균형을 맞추는 데 적합합니다.
최대 압축을 위한 추천값
- --part-size-min: 4
- 작은 블록 크기로 세밀한 압축.
- --part-size-max: 64
- 큰 블록 크기로 정적인 영역에서 효율적인 압축.
- --tile-columns: 1
- 타일을 사용하지 않아 압축 효율 극대화.
- --tile-rows: 1
- 타일을 사용하지 않아 압축 효율 극대화.
- --max-temporal-layers: 3~4
- 계층화된 참조 구조로 압축 효율을 높임.
이 설정은 최대 압축을 목표로 하지만, 인코딩 시간이 증가하고 디코딩 성능이 낮아질 수 있으므로 콘텐츠와 사용 목적에 맞게 조정하세요.
각 옵션에 관련된 용어들은 영상 인코딩에서 효율성과 압축 성능을 최적화하기 위해 사용하는 고급 개념들입니다. 이들을 하나씩 자세히 설명해 드리겠습니다.
1. Luma Coding Block
- 루마 코딩 블록: 비디오 프레임에서 색상 정보를 표현하는 기본 단위인 루마 (Y) 값을 인코딩하는 블록입니다. 영상에서 루마는 밝기 정보를 나타내고, **크로마 (U, V)**는 색상 정보를 나타냅니다. 루마는 일반적으로 영상의 세부 정보가 많이 포함된 부분으로, 압축에서 중요한 역할을 합니다.
- Luma Coding Block Partition: 루마 블록을 나누는 단위로, 이 블록을 얼마나 작게 또는 크게 나눠서 압축할지를 결정합니다. 압축 효율성과 품질에 중요한 영향을 미칩니다.
2. Tile
- 타일: 타일은 비디오 프레임을 여러 개의 작은 영역으로 나눈 것입니다. 타일을 사용하면 인코딩과 디코딩 시 병렬 처리가 가능해져 성능을 최적화할 수 있습니다. 또한, 고해상도 비디오에서 타일을 사용하면 각 타일을 독립적으로 처리하여 효율성을 높일 수 있습니다.
- Tile Columns & Tile Rows: 타일을 세로(행)와 가로(열)로 나누어 구성합니다. 예를 들어, 타일 열이 4로 설정되면 프레임이 4개의 세로로 분할되고, 타일 행이 4로 설정되면 프레임이 4개의 가로로 분할됩니다. 타일을 사용하면 압축 효율을 높일 수 있지만, 너무 많이 사용하면 압축 효과가 떨어질 수 있습니다.
3. Temporal Layers (시간 계층)
- Temporal Layers (시간 계층): 시간 계층은 비디오의 각 프레임을 이전 프레임을 참조하여 압축하는 방식입니다. 이 방식은 계층형 인코딩(hierarchical encoding)을 사용하여 이전에 인코딩된 프레임을 참조해 새로운 프레임을 인코딩합니다. 시간 계층은 주로 P-프레임과 B-프레임의 참조 관계에서 사용됩니다.
- Temporal Layer는 복잡한 영상에서 더 나은 비트 할당을 통해 압축 성능을 높일 수 있습니다. Max Temporal Layers는 이 계층 구조에서 사용할 수 있는 최대 계층 수를 지정하며, 이 값이 클수록 인코딩이 더욱 효율적입니다.
4. QP (Quantization Parameter)
- QP (Quantization Parameter): 영상의 품질과 압축률을 결정하는 파라미터로, QP 값이 낮을수록 영상의 품질이 높고, QP 값이 높을수록 품질이 낮아집니다. 그러나 QP 값을 높이면 압축률이 증가하기 때문에 파일 크기를 줄일 수 있습니다.
- Spatial AQ (Spatial Adaptive Quantization): Spatial AQ는 영상의 공간적 특성에 따라 QP 값을 다르게 적용하는 기법입니다. 예를 들어, 영상에서 세부 사항이 많은 고해상도 부분은 QP 값을 낮게 설정하여 더 많은 비트를 할당하고, 정적인 배경과 같이 단순한 부분은 QP 값을 높여 압축을 증가시킬 수 있습니다. 이 방식은 압축된 비디오에서 더욱 시각적으로 보이는 품질 차이를 줄여줍니다.
5. B-Frames, P-Frames, I-Frames
- I-Frame (Intra-coded Frame): I-프레임은 독립적인 프레임으로, 다른 프레임에 의존하지 않고 압축됩니다. I-프레임은 전체 프레임을 기록하기 때문에 크기가 가장 큽니다.
- P-Frame (Predicted Frame): P-프레임은 이전 프레임(주로 I-프레임 또는 P-프레임)과의 차이만을 기록합니다. P-프레임은 전체 데이터를 저장하지 않고, 이전 프레임의 정보를 기반으로 차이만 저장하므로 크기가 상대적으로 작습니다.
- B-Frame (Bi-directional Frame): B-프레임은 양방향 예측을 사용합니다. 이전과 이후의 프레임을 모두 참조하여 데이터를 압축하므로 P-프레임보다 더욱 효율적입니다. 하지만, B-프레임을 너무 많이 사용하면 디코딩 성능에 부정적인 영향을 미칠 수 있습니다.
6. Rate Control
- Rate Control: 비디오 인코딩에서 비트레이트를 제어하는 방법입니다. VBR (Variable Bit Rate), CBR (Constant Bit Rate) 등의 방식을 통해 출력 비디오의 품질을 제어합니다. VBR은 비트레이트를 동적으로 조절하여 필요한 만큼만 비트를 할당하고, CBR은 일정한 비트레이트로 출력합니다.
- VBR (Variable Bit Rate): 비트레이트를 동적으로 조절하는 방식으로, 동적 장면에서는 비트레이트를 높이고, 정적 장면에서는 비트레이트를 낮추어 효율적으로 압축합니다.
7. Ref Frames
- Ref Frames (Reference Frames): 비디오 인코딩에서 참조 프레임을 사용하여 다른 프레임을 예측하는 방식입니다. 주로 P-프레임과 B-프레임에서 참조 프레임을 사용하며, 이를 통해 압축 효율을 높일 수 있습니다. 참조할 수 있는 프레임의 수를 설정하는 것이 Ref Frames입니다.
8. CUDA Processing
- CUDA (Compute Unified Device Architecture): NVIDIA 그래픽 카드에서 제공하는 병렬 처리 기술로, 비디오 인코딩에서 복잡한 계산을 GPU로 처리하여 성능을 개선합니다. AV1 인코딩에서 Temporal AQ(시간 기반 AQ) 기능을 활성화하면 CUDA를 사용하여 더 높은 효율성을 구현할 수 있습니다.
9. Max Temporal Layers
- Max Temporal Layers (최대 시간 계층): 계층형 압축을 사용할 때 최대 몇 개의 시간 계층을 사용할지를 설정하는 옵션입니다. 이 값이 클수록, 인코딩된 비디오가 더 많은 참조 프레임을 사용하여 효율적으로 압축될 수 있습니다. 그러나 이 옵션을 지나치게 설정하면 디코딩 성능에 영향을 줄 수 있으므로 적절한 균형을 맞춰야 합니다.
요약
위의 옵션들은 AV1 인코딩에서 압축 효율을 높이고 인코딩 성능을 최적화하는 다양한 방법을 제공합니다. 각 옵션을 조정함으로써 비디오 품질과 압축 비율을 향상시키거나 인코딩 시간을 단축할 수 있습니다. 설정을 최적화하는 과정에서 콘텐츠의 특성에 맞게 균형을 맞추는 것이 중요합니다.
반응형
'IT생활' 카테고리의 다른 글
동영상 인코딩에서의 B Frames 값 설정하기 (0) | 2025.01.23 |
---|---|
동영상 인코딩에서 Spatial AQ (공간 적응형 양자화)와 Temporal AQ (시간 적응형 양자화)에 대한 설명 (0) | 2025.01.23 |
왜 내가 직접 동영상 인코딩을 하면 화질이 별로일까? (0) | 2025.01.23 |
TrueNAS vs 시놀로지 (Synology) 목적, 기능, 유연성, 사용 편의성 장단점 등, 자세하게 비교해보았다. (0) | 2025.01.23 |
하드디스크에서 순차 읽기보다 랜덤 읽기를 많이하면 수명이 그 만큼 더 줄어들까? 설명해보았다 (0) | 2025.01.23 |