[ios] VideoToolbox 인코딩 프로필과 레벨 구성

iOS의 VideoToolbox 프레임워크는 하드웨어 가속을 사용하여 비디오 인코딩과 디코딩을 지원하는 강력한 도구입니다. 이것은 고성능 비디오 처리를 위한 훌륭한 선택지로, 플랫폼에서 제공하는 다양한 인코딩 프로필과 레벨을 이용할 수 있습니다. 이 블로그에서는 VideoToolbox에서 인코딩 프로필과 레벨을 구성하는 방법에 대해 알아봅니다.

VideoToolbox 인코딩 프로필

VideoToolbox은 H.264 및 HEVC와 같은 다양한 비디오 코덱을 지원합니다. 각 코덱은 서로 다른 프로필을 제공하는데, 예를 들어 H.264에서는 Baseline, Main, High와 같은 프로필을 제공합니다. 이러한 프로필은 비디오의 압축률과 품질에 영향을 미치며, 다양한 앱 및 디바이스에서 호환성을 보장하는 데 사용됩니다.

VideoToolbox에서는 kVTProfileLevel_H264 상수를 사용하여 인코딩 프로필을 선택할 수 있습니다. 예를 들어, 아래와 같이 H.264의 Main 프로필을 선택할 수 있습니다.

NSDictionary *compressionProperties = @{
    (__bridge NSString *)kVTCompressionPropertyKey_ProfileLevel: (__bridge NSString *)kVTProfileLevel_H264_Main_AutoLevel
};

VideoToolbox 인코딩 레벨

인코딩 레벨은 프로필과 함께 사용되어 허용되는 비디오의 최대 해상도, 프레임 속도, 비트레이트 등을 정의합니다. 이를 통해 특정 디바이스에서 지원되는 비디오 스트림의 속성을 설정할 수 있습니다.

예를 들어, H.264의 레벨을 설정하려면 아래와 같이 kVTCompressionPropertyKey_H264EntropyMode 속성을 지정할 수 있습니다.

NSDictionary *encoderSpec = @{
    (__bridge NSString *)kVTCompressionPropertyKey_H264EntropyMode: (__bridge NSString *)kVTH264EntropyMode_CABAC,
};

결론

VideoToolbox은 다양한 비디오 코덱 및 프로필/레벨을 지원하며, 이를 통해 효율적인 비디오 인코딩 및 디코딩을 가능케 합니다. 적절한 프로필과 레벨을 선택하여 성능 최적화 및 디바이스 호환성을 고려하여 비디오 처리를 구성할 수 있습니다.

이상으로 VideoToolbox에서의 인코딩 프로필과 레벨 구성에 대해 알아보았습니다. 여러분의 앱에서 VideoToolbox를 사용할 때, 이러한 설정을 활용하여 최상의 비디오 처리를 구현할 수 있기를 바랍니다.