mpv-player / mpv-player/mpv

Duplicate subtitles when seeking HLS/m3u8 URLs

Open
#17,338 13 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 Dec 28 2025 10:15:23
libplacebo version: v7.351.0
FFmpeg version: n8.0.1
FFmpeg library versions:
   libavcodec      62.11.100
   libavdevice     62.1.100
   libavfilter     11.4.100
   libavformat     62.3.100
   libavutil       60.8.100
   libswresample   6.1.100
   libswscale      9.1.100
Other Information
- Linux version: CachyOS Linux
- Kernel Version: Linux cactus 6.18.7-2-cachyos #1 SMP PREEMPT_DYNAMIC Sun, 25 Jan 2026 01:36:38 +0000 x86_64 GNU/Linux
- GPU Model: 0000:00:02.0 VGA compatible controller [0300]: Intel Corporation Tiger Lake-LP GT2 [UHD Graphics G4] [8086:9a78] (rev 01)
- Mesa/GPU Driver Version: OpenGL version string: 4.6 (Compatibility Profile) Mesa 25.3.4-arch1.2
- Window Manager and Version: KDE Plasma 6.5.5
- Source of mpv: CachyOS Repo (cachyos-extra-v4)
- Latest known working version: 
- Issue started after the following happened:
Reproduction Steps
  1. Use yt-dlp to obtain a m3u8 URL on a YouTube video that has subtitles, e.g.:
    yt-dlp --extractor-args "youtube:player-client=web_safari" --print manifest_url "https://www.youtube.com/watch?v=07EzMbVH3QE"
    
    Note: Requires a JavaScript runtime and the latest yt-dlp nightly in order not get 403 Forbiddened
  2. Use mpv to playback the m3u8 URL:
    mpv "https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1769499473/ei/8BZ4aav1GaXjy_sP5ubR0Ag/ip/104.28.213.30/id/d3b13331b547dd01/source/youtube/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/playback_host/rr4---sn-c0q7lns7.googlevideo.com/met/1769477872%2C/mh/vW/mm/31%2C26/mn/sn-c0q7lns7%2Csn-hpa7znzy/ms/au%2Conr/mv/m/mvi/4/pl/24/rms/au%2Cau/tx/51539830/txs/51539830%2C51539831/hfr/1/tts_caps/1/maudio/1/initcwndbps/2217500/bui/AW-iu_pHHMLPQX6UAuQ9iMWJOqHm3TJODUhlKy8RBOMh1iKS3M_O2lNYg8iUE84ErtCUkVwGf9ShwbSX/spc/q5xjPGK_c07kJCrdl7iupcqkHXIK2VSW99t4dpZ3b_WdL2lSc324mZgFhXK3lWUApr88JGmVwGMXHZ_lAWQUtXY78_k/vprv/1/go/1/ns/9OqxPu5HcuuQUQujEQdQ3OES/rqh/5/mt/1769477338/fvip/3/nvgoi/1/ncsapi/1/keepalive/yes/fexp/51355912%2C51552689%2C51565115%2C51565681%2C51580968/dover/11/n/evqMgctNisZr5w/itag/0/playlist_type/CLEAN/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Ctx%2Ctxs%2Chfr%2Ctts_caps%2Cmaudio%2Cbui%2Cspc%2Cvprv%2Cgo%2Cns%2Crqh%2Citag%2Cplaylist_type/sig/AJEij0EwRQIhAOx-K6KXOol7eEgg7IrfOLaG2UEr7PesQUYsteiU4fNLAiBGfL6TEin8N13DlKOIvlSGKNAsLTsNUeA0DCTj89OD4w%3D%3D/lsparams/playback_host%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps/lsig/APaTxxMwRAIgZwim2qv4cxQy6yDMfQIgD0BPCBADrn27n3hhR_gB6O8CIHtCedZTVZlcQ76h1qsZTsy0C4TJ-OXLJCzlYJBrSTTh/pot/MtgE36nu7BxWG7Hf7WEp7wUd5yQmrtiRszhASNI-IdkJhLTLl2bfvGnqGaNWPamovne0EmKjwjQa-easpEze4MDNJeE2csYxJ5mL8Rs0A6qraDhMtfHZWn5oy72hqX8-TnnCi7feRRTBthl97Z-sOiuiYjvqRcZESzdVLcDHG7Lodj4PvoXU4_iWLFydPf181OrqS2EY4Vi5Dx9J8gj-PHXvJtFp_hBz3nufXB47486Bxgi1JnuULokwxPE9XFIy_hhPgDZvrTINwr4rEaH8YRXspfy3G7IS96cfVlniOXG88MGuKifvV9JJTLKbSnW88ldvcGy6RtmFUVI2obN3xY4KrGmrq63uwSB1g_y0GsVzFZeuVTjlM-Eh5e4cz_3s4dwfvVseQ3tBcm7RYLEQ2sWbY0UPWBl194KQ0ApdRisXHEWNJPxHmDtcHlut9l2BRkDSRteqROzBITeMjNyb7WAh3V-A5A8RK8lxovVySKMaBarFJ9wGJuz0o0Op9A8eyaA8Jo4ErBrRgLIUU8iXO-IsGvmAf4RZqFeWDqS_t-5B5OxvrNOmMZnZk_ReQLzq3-lfjiw5b_RQNFkfHz13vHM9ErpVD2h1NzSn4iF6goCHLh70qy-QDv1VpNCbO8W6cqWnUpZrvL_hCBQMHEAFvDUWJ7v2wRpuZb2D2Rx2Kk8y6FwNLOaqDuqqjxCRuSdP6AtijOO9fCI9n6TCjCRy6CIYf0oRb47hwoZsda-I6Qg9lR-AsGGn0KZdQmFiSgJGtsCy5OmNLhgvL_RweCJ_xJ9Z9tNavoeOr7CI/file/index.m3u8"
    
  3. Enable any subtitle track and seek though the video.
Expected Behavior

The subtitles should not be duplicated.

Actual Behavior

The subtitles are duplicated.

Demo: https://files.catbox.moe/ydfun6.webm

Log File

output.txt

Sample Files

Here's a sample URL, but this URL will expire in ~6hrs by YouTube from the time this gets posted

https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1769500814/ei/Lhx4aZ-NE7Hfj-8Pjd_ayAY/ip/2a09%3Abac1%3A7680%3A1390%3A%3A41a%3A18/id/d3b13331b547dd01/source/youtube/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/playback_host/rr1---sn-vgqskne6.googlevideo.com/met/1769479214%2C/mh/vW/mm/18%2C29/mn/sn-vgqskne6%2Csn-vgqskn6y/ms/aub%2Crdu/mv/m/mvi/1/pl/49/rms/aub%2Caub/tx/51539831/txs/51539830%2C51539831/hfr/1/tts_caps/1/maudio/1/initcwndbps/3087500/bui/AW-iu_pQAa2jARa54L3pkXE1fRV5DeDUGeafvPKVXi5fcTNMzcVe8TAdvCDnyyGfS4ue6qVeeKp2Q9kq/spc/q5xjPLxur_1M0yLH_TStstP5BKeUG-PPA6lICsnKSiwnilu4cMWtrp2dbrDDYihNcVTu_uwKFiEJBiTjw27KgH6SmlM/vprv/1/go/1/ns/gH8srlOm-HXuyrOXa134olAS/rqh/5/mt/1769479001/fvip/1/nvgoi/1/ncsapi/1/keepalive/yes/fexp/51355912%2C51552689%2C51565116%2C51565682%2C51580968/dover/11/n/zz4cZOB5d3oNhg/itag/0/playlist_type/CLEAN/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Ctx%2Ctxs%2Chfr%2Ctts_caps%2Cmaudio%2Cbui%2Cspc%2Cvprv%2Cgo%2Cns%2Crqh%2Citag%2Cplaylist_type/sig/AJEij0EwRQIhAORuJ7Iq3anGwRABV1XzuJx6x65hY6fEXc1GQz703I9DAiANtB9kgnQyBP8QdF_-xHHpY7ydsaswwraKViYt07MzfQ%3D%3D/lsparams/playback_host%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps/lsig/APaTxxMwRQIhAM-SbFWmWoPcvShQKGP4MZqARR7E71M1r-ZprHFv6VibAiB1lYrCP5jRIQU9YVoNpUX0_f5s6QQMoAMKmhpgT7x-bw%3D%3D/file/index.m3u8
I carefully read all instruction and confirm that I did the following:
  • I tested with the latest mpv version to validate that the issue is not already fixed.
  • 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

Run the provided yt-dlp and mpv reproduction commands, then review output.txt while enabling a subtitle track and seeking an HLS/m3u8 URL. Done means subtitle text appears once rather than being duplicated after seeks; the payload does not identify a source file or test.

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
Quiet
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.