Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- WWDC 2021
- Reality Composer
- DriverKit
- Mac
- SF Symbols 3.0
- CoreML
- Physical Audio
- AVFoundation
- Object Capture
- swiftUI
- DooC
- actor
- AR Quick Look
- Hand Action Detect
- SF Symbols
- Hand Pose Detect
- profile
- AppleEvent
- detent
- ProRAW
- App Clip
- SWiFT
- concurrency
- METAL
- Xcode Organizer
- async
- User Enrollment
- MDM
- Xcode Cloud
- NSUserActivity
Archives
- Today
- Total
nyancoder
WWDC 2021 - What’s new in AVFoundation 본문
원본 영상: 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가 제공됩니다.
- 자막 파일을 다룰 수 있습니다.
'WWDC > WWDC 2021' 카테고리의 다른 글
WWDC 2021 - What’s new in camera capture (0) | 2021.07.07 |
---|---|
WWDC 2021 - Detect and diagnose memory issues (0) | 2021.07.06 |
WWDC 2021 - ARC in Swift: Basics and beyond (0) | 2021.07.04 |
WWDC 2021 - Understand and eliminate hangs from your app (0) | 2021.07.03 |
WWDC 2021 - What‘s new in Swift (0) | 2021.07.03 |
Comments