Skip to content

5.10.0

Choose a tag to compare

@superuser404notfound superuser404notfound released this 19 Jul 17:24

Added

Non-live remote HLS on the loopback path now plays, with its external WebVTT subtitle renditions surfaced as subtitleTracks (#154)

The bundled FFmpeg is built without network support, so a remote VOD m3u8 handed to the default (loopback) path could never be demuxed: the hls probe does not engage behind the custom I/O context, and even if it did, it could not fetch a single variant. The open used to die with a bare AVERROR_INVALIDDATA.

  • The AVIOReader now classifies an #EXTM3U body on the non-live path (typed hlsPlaylistOnVODPath, the #140 sibling for VOD), and load() transparently reroutes the URL onto the nativeRemoteHLS bypass, where AVPlayer plays remote HLS natively. Hosts no longer need to pre-route m3u8 URLs themselves.
  • A VOD startPosition now rides into the bypass as a resume seek. Live callers keep the historical no-initial-seek contract.
  • On the bypass, the engine maps the item's legible AVMediaSelectionGroup onto subtitleTracks (synthetic ids, forced and SDH dispositions carried, group order preserved). selectSubtitleTrack(index:) and clearSubtitle() drive AVPlayer's media selection with the manual-criteria pin; AVPlayer renders the cues itself. An AVKit or caption-preference auto-select is mirrored into activeSubtitleTrackIndex after readiness so host pickers start truthful.

Verified end-to-end against the reported WWDC CMAF stream: the reroute engages, all 7 declared subtitle renditions surface, and an explicit English selection lands on the item's media selection.

Covered by RemoteHLSMediaSelectionTests. Reported by jihongboo (#154). Thanks for the detailed report and source-level analysis.