Skip to content

fix(macos): report the audio format of HLS streams - #262

Open
comprido96 wants to merge 1 commit into
kdroidFilter:masterfrom
comprido96:fix/macos-hls-audio-metadata
Open

comprido96 wants to merge 1 commit into
kdroidFilter:masterfrom
comprido96:fix/macos-hls-audio-metadata

Conversation

@comprido96

Copy link
Copy Markdown

Problem

On macOS, metadata.audioChannels and metadata.audioSampleRate stay null for every HLS stream, even with an AAC track playing. They are read from the asset's tracks, and an HLS asset lists none. A caller cannot tell whether to offer a mute control.

Fix

  • For HLS, observe AVPlayerItem.tracks and read the channel count and sample rate from the audio track's format description once the item has loaded it.
  • MacVideoPlayerState backfills metadata.audioChannels / audioSampleRate from its position poll, since the tracks arrive after open.

Testing

Tested on macOS 26 (Apple Silicon), against Frigate 0.17 HLS VOD clips (fMP4 segments, EXT-X-DISCONTINUITY between segments, keyframes every 2 s) from two cameras: H.264 Baseline 1280×720 25 fps, and H.264 High 2560×1920 ~30 fps VFR with AAC.

  • Native: a Swift driver built against this NativeVideoPlayer.swift: getAudioChannels() returns 1 on both cameras (before: 0).
  • The Kotlin backfill compiles (:mediaplayer:jvmJar); I have not exercised it in an app with exactly this code.

Prepared with an AI coding assistant (Claude Code) while integrating the library into a macOS desktop app, and tested as described above. Happy to adjust, split or drop anything that does not fit the project.

🤖 Generated with Claude Code

metadata.audioChannels and audioSampleRate were read from the asset's tracks,
which an HLS asset does not list: both stayed null for every HLS stream, even
with an AAC track playing.

For HLS, read them from the AVPlayerItem's tracks once the item has loaded
them, and backfill the metadata from the position poll, since that happens
after open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants