AVMutableComposition audio silently drops on iOS 26 when streaming over HTTP/2 (FB22696516)

We've discovered a regression in iOS 26 where AVMutableComposition silently drops audio when the source asset is streamed over HTTP/2. The same file served over HTTP/1.1 plays audio correctly through the same composition code. Direct AVPlayer playback (without composition) works fine on HTTP/2. This did not occur on iOS 18.x.

It happens on physical devices only. It does not reproduce on a simulator or on macOS.

Tested conditions (same MP4 file, different CDNs):

  • CloudFront (HTTP/2) + Composition → ❌ Audio silent
  • Cloudflare (HTTP/2) + Composition → ❌ Audio silent
  • Akamai (HTTP/1.1) + Composition → ✅ Audio works
  • Apple TS (HTTP/1.1) + Composition → ✅ Audio works
  • Downloaded locally, then composed → ✅ Audio works
  • Direct playback, no composition (HTTP/2) → ✅ Audio works

The CloudFront and Akamai URLs serve the identical file — same S3 object, different CDN edge. CDN vendor doesn't matter; any HTTP/2 source triggers it.

Minimal reproduction:

let asset = AVURLAsset(url: http2URL)
let videoTrack = try await asset.loadTracks(withMediaType: .video).first!
let audioTrack = try await asset.loadTracks(withMediaType: .audio).first!
let duration = try await asset.load(.duration)

let composition = AVMutableComposition()
let fullRange = CMTimeRange(start: .zero, end: duration)

let compVideo = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)!
try compVideo.insertTimeRange(fullRange, of: videoTrack, at: .zero)

let compAudio = composition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)!
try compAudio.insertTimeRange(fullRange, of: audioTrack, at: .zero)

let item = AVPlayerItem(asset: composition.copy() as! AVComposition)
player.replaceCurrentItem(with: item)
player.play()
// Video plays, audio goes silent after a while

Playing the same asset directly works fine:

player.replaceCurrentItem(with: AVPlayerItem(asset: asset))
player.play() // Both video and audio work

Filed as FB22696516

Sample project: https://github.com/karlingen/AVCompositionBug

Great report @karlingen. We're also experiencing this same issue in iOS 26.

Hello @velocitysystems,

To help us gather further information on this issue, can you also please file a bug report via Feedback Assistant with relevant logs and sysdiagnose? That way we can establish if the issue in your app is the same as karlingen's. After you've filed the report, please post its number to this thread.

Thank you,

Richard Yeh  Developer Technical Support

AVMutableComposition audio silently drops on iOS 26 when streaming over HTTP/2 (FB22696516)
 
 
Q