In this guide
Draw the entry point and targetObserve retrieval and pre-roll separatelyChoose a correction appropriate to who controls the mediaA seek can wait even when the requested time is valid and the connection is working. The player may need new media bytes and may then decode from an earlier suitable entry point before displaying the exact requested picture.
Those are different sources of delay. Preserve request and decoder evidence rather than treating every slow jump as low broadband speed or an unseekable file.
Draw the entry point and target
In an original hypothetical example, a suitable decoder entry is at 12 seconds and the requested target is 13.5 seconds. At constant 30 fps, the gap spans forty-five frame intervals. An accurate seek can require processing earlier dependent pictures while withholding them from display.
The exact number of decoded pictures depends on the actual stream and starting context. The example is timeline arithmetic, not a claim that every 1.5-second seek pre-roll has the same wall-clock processing cost.
Observe retrieval and pre-roll separately
Check whether the relevant media is already buffered. If a new range or segment request is needed, record its outcome and timing. After the bytes arrive, retain any player state or decoder error. Android documents these retrieval and decoding stages separately in its seek troubleshooting guidance.
Compare requested and actual resume positions. Some supported seek modes trade exactness for a nearby suitable position. A fast approximate jump and a slower accurate jump do not represent identical results, so report the chosen policy where known.
Choose a correction appropriate to who controls the media
A viewer should use documented controls and report the configuration and repeatable position. An author who controls the media can consider indexing, random-access frequency and encoding settings, then validate the result for the intended clients. More frequent keyframes can increase resource requirements or affect encoder decisions; there is no universal interval that optimizes every goal.
A useful report includes target, actual position, existing buffer, new request time, selected format and accuracy setting if exposed. If retrieval is quick but the remaining wait is repeatable, say so without claiming a particular hardware defect. If the container cannot support the intended seek efficiently, that is another question requiring its own format evidence.
| Stage | Helpful observation |
|---|---|
| Locate/retrieve | Index/range/segment request and completion |
| Initialize/decode | Applicable entry point and pre-roll context |
| Present | First actual displayed position |
| Compare | Accuracy policy and repeated result |
