nyancoder

WWDC 2021 - What’s new in AVFoundation 본문

WWDC/WWDC 2021

WWDC 2021 - What’s new in AVFoundation

nyancoder 2021. 7. 5. 02:33

원본 영상: https://developer.apple.com/videos/play/wwdc2021/10146/

 

AVAsset async inspection

  • AVAsset에 대한 조사는 비디오 파일이 크기 때문에 필요할 때 필요한 값에 대해 진행됩니다.
  • 또한 네트워크를 통해 값을 가져올 수 있기 때문에 비동기로 동작합니다.

  • async를 지원하는 새 load API를 통해 비동기로 쉽게 값을 가져올 수 있습니다.
  • 하나의 값을 불러오는 것과 거의 유사하게 여러 개의 값을 불러올 수 있습니다.

  • 특정 값의 상태가 불러온 상태인지, 아니면 아직 불러오지 않았는지, 값을 얻어오는데 실패한 상태인지 등을 체크할 수 있는 status 함수가 추가되었습니다.

  • AVAsset에는 비동기로 값을 불러올 수 있는 많은 함수와 속성들이 추가되었습니다.
  • .tracks와 .metadata는 다른 속성들과는 다르게 계층적인 값을 제공하는 복잡한 객체를 제공합니다.
  • .tracks의 경우 AVAssetTracks을 얻을 수 있으며, AVAssetTracks 또한 비동기적으로 값을 얻어올 수 있는 많은 함수들이 있습니다.
  • .metadata의 경우는 AVMetadataItem의 배열을 제공하며 AVMetadataItem도 비동기로 값을 불러올 수 있는 함수들을 제공합니다.

  • 처음 세 가지 방법 중 하나를 사용하여 전체 트랙을 불러오는 대신 일부 트랙만을 불러올 수 있습니다.
  • AVAsset 및 AVAssetTrack 비동기로 데이터를 불러올 수 있는 새로운 기능들이 추가되었습니다.

  • 기존 방식에서는 데이터가 잘 불러와졌는지 체크하는 부분을 잊어버리기가 쉽습니다.
  • 비동기로 로딩하는 과정을 빼먹었다면, 이후 호출은 동기적으로 I/O를 호출하여 스레드를 블록 합니다.
  • 새로운 API는 비동기적으로 동작하며 이런 부분을 빼먹지 않도록 설게 되어 있어 더 안전합니다.

  • 값을 읽고, 상태를 확인하고, 속성을 동기적으로 가져오는 코드는 load 함수로 대체되었습니다.
  • 동일하게 함수를 호출하는 코드 또한 비동기적으로 함수를 호출하도록 변경되었습니다.
  • 상태를 체크하고 해당 상태에 맞는 값을 가져오는 것 역시 status(of:) 함수와 switch문으로 한 번에 할 수 있습니다.
  • 이미 불러와진 값을 다시 불러오는 것은 새 비동기 함수에서 내부적으로 값을 캐싱하여 자동으로 처리됩니다.
  • status의 .loaded 상태를 통해서도 이미 이전에 불러왔던 값을 얻어올 수 있습니다.
  • 동기적으로 호출되던 이전의 함수들은 성능을 저하할 수 있기 때문에 새로 제공되지 않습니다.

 

Video compositing with metadata

  • 새로 추가된 API를 통해 frame마다 Metadata를 처리하는 것이 가능해졌습니다.

  • 합성에 사용하는 metadata의 모든 트랙의 ID를 AVMutableVideoComposition에 전달해야 합니다.
  • AVMutableVideoCompositionInstruction에는 각각의 합성에 필요한 track ID들만 전달합니다.

  • sourceSampleBufferByTrackID함수를 통해 데이터 트랙의 ID목록을 얻어올 수 있습니다.
  • 얻어온 트랙의 ID를 sourceTimedMetadata(ByTrackID:) 함수를 통해 메타 데이터를 얻어올 수 있습니다.
  • AVTimedMetadataGroup는 높은 수준의 추상화된 메타 데이터 정보이지만 좀 더 낮은 레벨에서 접근하고자 할 때에는 sourceSampleBuffer(byTrackID:) 함수를 사용할 수 있습니다.

 

Caption file authoring

  • 맥에서 자막은 .itt형식과 .scc형식의 두 가지가 이용 가능합니다.
  • 새 API를 통해 자막을 읽고, 작성하고, 미리보기를 할 수 있습니다.

  • AVCaption은 단일 자막을 나타내며 문자열과 위치, 스타일을 포함합니다.
  • AVAssetWriterInputCaptionAdaptor를 통해 두 가지 자막 형식 중 원하는 형식에 자막을 쓸 수 있습니다.
  • AVCaptionConversionValidator를 통해 작성 중인 자막이 파일 형식과 호환되는지를 검증할 수 있습니다.
  • 예를 들어 .scc파일에는 CEA-608 caption을 포함하는데, 이는 특정 시간 동안 보일 수 있는 자막의 양에 제약이 있습니다.

요약하면 새 버전에서 제공되는 기능은 아래와 같습니다.

  • Asset을 조사할 때는 새로운 비동기 API를 사용하여 필요한 부분만 비동기적으로 진행해야 합니다.
  • 오래된 동기 API에서 새 API로 변경해야 합니다.
  • 메타 데이터를 합성할 수 있는 새로운 API가 제공됩니다.
  • 자막 파일을 다룰 수 있습니다.

 

목차: https://nyancoder.tistory.com/2

Comments