Skip to content

Safari 26: Video freezes on future frame after repeated backward seeks #7819

Description

@PavelFomin90

What version of Hls.js are you using?

1.6.15

What browser (including version) are you using?

Safari 26.4

What OS (including version) are you using?

MacOs 26.4

Test stream

No response

Configuration

{
  debug: true,
  enableWorker: true,
  lowLatencyMode: true,
  maxMaxBufferLength: 180,
  autoStartLoad: true,
  startLevel: 3,
  liveSyncDurationCount: 2,
  capLevelToPlayerSize: true,
  manifestLoadPolicy: {
    default: {
      maxTimeToFirstByteMs: 5000,
      maxLoadTimeMs: 5000,
      timeoutRetry: {
        maxNumRetry: 1,
        retryDelayMs: 0,
        maxRetryDelayMs: 0,
      },
      errorRetry: {
        maxNumRetry: 10,
        retryDelayMs: 1000,
        maxRetryDelayMs: 2000,
      },
    },
  },
  playlistLoadPolicy: {
    default: {
      maxTimeToFirstByteMs: 10000,
      maxLoadTimeMs: 5000,
      timeoutRetry: {
        maxNumRetry: 1,
        retryDelayMs: 0,
        maxRetryDelayMs: 0,
      },
      errorRetry: {
        maxNumRetry: 2,
        retryDelayMs: 1000,
        maxRetryDelayMs: 8000,
      },
    },
  },
  fragLoadPolicy: {
    default: {
      maxTimeToFirstByteMs: 5000,
      maxLoadTimeMs: 20000,
      timeoutRetry: {
        maxNumRetry: 1,
        retryDelayMs: 0,
        maxRetryDelayMs: 0,
      },
      errorRetry: {
        maxNumRetry: 4,
        retryDelayMs: 1000,
        maxRetryDelayMs: 2000,
      },
    },
  },
  maxBufferHole: 5,
};

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. Seek the video almost to the end (close to the end, but not completely)
  2. Start rapidly seeking backward.
  3. Stop seeking.
  4. If the issue doesn't reproduce, repeat the steps.

Expected behaviour

Video don't stall after seeking

What actually happened?

When repeatedly seeking backward (e.g., in 10-second steps by holding down a key) in Safari 26.4 (macOS 26.4 Tahoe) — also reproducible in Safari 26.3 — the video freezes on a frame that is ahead of the current currentTime position. The currentTime continues to advance, and playback only resumes once the playback reaches that future frame.

This behavior is also reproducible with hls.js version 1.4.2.

In older versions of Safari, such as 18.6, seeking works correctly.

There are no errors in the logs from hls.js, nor from the browser.

The bug is intermittent but reproduces frequently.

video of bug: https://drive.google.com/file/d/1VwS8b3Vvwh3M7Urd2CvblHWkoM7NPUjZ/view?usp=sharing&t=41.704

video of bug on your testing env: https://drive.google.com/file/d/10x2d0rFjpgpPwWC0h6LnMighxQdn8W_h/view?usp=sharing

Console output

https://drive.google.com/file/d/1-Wp3RjoJOz_XTUacrus2JNuFGCfJ30Wn/view?usp=sharin

Chrome media internals output

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions