0.2.0 — Cloud Transcoding
Delegate transcoding to Cloudflare Stream, AWS MediaConvert, or Mux — same Transcoder protocol, zero local GPU required.
New Features
ManagedTranscoder
ManagedTranscoder offloads heavy transcoding work to cloud providers while conforming to the same Transcoder protocol as AppleTranscoder and FFmpegTranscoder. Local file in, local file out — callers don't need to know whether transcoding happens locally or in the cloud.
- Cloudflare Stream — Zero egress costs, global CDN, Bearer token auth
- AWS MediaConvert — Enterprise-grade, SigV4 request signing, S3 storage integration
- Mux — Simplest API, auto-adaptive bitrate, Basic Auth
Full job lifecycle management: upload → create job → poll status → download output → optional cloud asset cleanup.
Streaming Upload & Download
URLSessionHTTPClient now streams files to and from disk without loading entire files into memory. Handles 500 MB+ video files with constant memory footprint and granular progress reporting through 5 phases (upload, job creation, polling, download, complete). Uses OSAllocatedUnfairLock for compile-time Sendable safety on Darwin, with Data(contentsOf:) fallback on Linux.
Configurable Quality Presets
ManagedTranscodingConfig.defaultPreset lets users choose the default quality (.p720 by default). Set .audioOnly for podcast audio, .p1080 for HD, or any QualityPreset value.
HLSEngine Integration
HLSEngine.managedTranscoder(config:) factory method creates a cloud transcoder transparently — same API surface as local transcoders.
Fixes
- SAMPLE-AES encryption — Fixed OpenSSL-based sample encryption for cross-platform compatibility
License
- Relicensed from MIT to Apache 2.0 across all source and test files, with proper SPDX headers and NOTICE file
Documentation
- New DocC article: Cloud Transcoding with ManagedTranscoder — configuration, providers, progress, job lifecycle, error handling
- Updated landing page, Transcoding article cross-references, and README
- 11 DocC articles (was 10), 0 warnings
Stats
| Metric | 0.1.0 | 0.2.0 |
|---|---|---|
| Tests | 1,595 | 1,809 |
| Coverage | 96.32% | 97.29% |
| DocC articles | 10 | 11 |
| Platforms | 6 | 6 |
| SwiftLint violations | 0 | 0 |
| Build warnings | 0 | 0 |
Full Changelog: 0.1.0...0.2.0