mpv-player / mpv-player/mpv

[partially_]seekable property isn't reliable

Open
#18,493 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

os:linux
Dominant language
C
Stars
37k
Forks
3.5k
Avg merge
1d 10h
Merged PRs (30d)
22

Description

mpv Information
mpv v0.41.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
 built on Aug 28 2026 19:44:41
libplacebo version: v7.360.1
FFmpeg version: n9.0.1
FFmpeg library versions:
   libavcodec      63.1.101
   libavdevice     63.1.101
   libavfilter     12.1.101
   libavformat     63.1.101
   libavutil       61.1.101
   libswresample   7.1.101
   libswscale      10.1.101
Other Information
- Linux version: Manjaro Linux
- Kernel Version: 7.0.9-1-cachyos-bore
- Mesa/GPU Driver Version: OpenGL version string: 4.6 (Compatibility Profile) Mesa 26.2.2-arch1.1
- Window Manager and Version: KDE Plasma 6.7.4
- Source of mpv: repository
Reproduction Steps

The tests are commands to be copied and pasted in a console to observe the properties when opening a non-seekable file and partially seekable (thanks to the cache) stream.

Test 1 (non-seekable file):

p=/tmp/w.lua; mkfifo $p; echo 'local function h(n,v) if v ~= nil then print(n .. " changed to: " .. tostring(v)) end end; mp.observe_property("partially_seekable", "string", h); mp.observe_property("seekable", "string", h)' > $p & mpv --script=$p ealogo.vp6; rm $p

Test 2 (cache-seekable stream):

p=/tmp/w.lua; mkfifo $p; echo 'local function h(n,v) if v ~= nil then print(n .. " changed to: " .. tostring(v)) end end; mp.observe_property("partially_seekable", "string", h); mp.observe_property("seekable", "string", h)' > $p & mpv --script=$p https://9a81dd4ee3884d0dbcacafaf0d81327a.mediatailor.us-east-1.amazonaws.com/v1/master/04fd913bb278d8775298c26fdca9d9841f37601f/RakutenTV-eu_BilliardsTV/playlist.m3u8; rm $p

Expected Behavior
Test 1 (non-seekable file):
seekable changed to: no
Test 2 (cache-seekable stream):
partially_seekable changed to: yes
seekable changed to: yes
Actual Behavior
Test 1 (non-seekable file):
seekable changed to: yes
Test 2 (cache-seekable stream):
seekable changed to: no
Log File

output Test 1 (non-seekable file).txt

output Test 2 (cache-seekable stream).txt

Sample Files

ealogo.vp6.zip
(the ealogo.vp6 file should be extracted first otherwise it will be identified correctly as seekable)

I carefully read all instruction and confirm that I did the following:
  • I tested and confirmed that the issue exists with the latest release version or newer.
  • I provided all required information including system and mpv version.
  • I produced the log file with the exact same set of files, parameters, and conditions used in "Reproduction Steps", with the addition of --log-file=output.txt.
  • I produced the log file while the behaviors described in "Actual Behavior" were actively observed.
  • I attached the full, untruncated log file.
  • I attached the backtrace in the case of a crash.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the two provided mpv observe_property reproduction commands and compare their output with the attached logs. Trace the seekable and partially_seekable property entry points in mpv's C source, then verify that non-seekable files and cache-seekable streams report the expected values in both cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
audio-video-rtc, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.