mpv-reload
mpv-reload copied to clipboard
external files are not connected
Hello, there is such a problem. If I opened the video and pulled the subtitles to the player from another folder or they had a different name, then after reloading these subtitles do not remain, and are included that are stitched or have the name of the video itself, is there a way to solve this problem?
Hi, thanks for reporting. Please provide some details on your setup, and how you load the subtitles. I was not able to reproduce the issue when using the --sub-file option:
- Start video with subtitles from an external file:
mpv --sub-file=Subs/01.ass 01.mkv - After pressing
Ctrl+r, subtitles remain.
I mean what if the subtitle and video names are not the same and if they are in different folders for example. then when using your script it does not connect them. Can the script support this? so that it remembers the tracks that were connected before the reboot.
I videotaped myself dragging a file with a different name and then reloading through your script, and it does not connect this file after reloading. Also on the video you can see that I used a clean player build without scripts and settings https://disk.yandex.ru/i/7ceYL-moqDuVHg
@4e6
I see. I'm not sure what's happening when you drag the subtitles file in the player window. Can you please run the same scenario with --msg-level='reload=debug' option and show me the log https://github.com/4e6/mpv-reload#debugging
Microsoft Windows [Version 10.0.22000.493] (c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
C:\Users\overe\Desktop\mpv-x86_64-20220116-git-1ba0547>mpv --no-msg-color --msg-level='reload=debug "C:\Торенты[VCB-Studio] Ryuuou no Oshigoto! [Ma10p_1080p][VCB-Studio] Ryuuou no Oshigoto! [01][Ma10p_1080p][x265_flac_aac].mkv" (+) Video --vid=1 () (hevc 1920x1080 23.976fps) (+) Audio --aid=1 --alang=jpn () (flac 2ch 48000Hz) Audio --aid=2 --alang=jpn (aac 2ch 48000Hz) AO: [wasapi] 44100Hz stereo 2ch float VO: [gpu] 1920x1080 yuv420p10 (Paused) AV: 00:00:01 / 00:24:32 (0%) A-V: 0.000 Track added: (+) Video --vid=1 () (hevc 1920x1080 23.976fps) (+) Audio --aid=1 --alang=jpn () (flac 2ch 48000Hz) Audio --aid=2 --alang=jpn (aac 2ch 48000Hz) (+) Subs --sid=1 '1.ass' (ass) (external) AV: 00:00:05 / 00:24:32 (0%) A-V: 0.000 [reload] reloading video from 5.505000 second [reload] file 1 of 1 in playlist
(+) Video --vid=1 () (hevc 1920x1080 23.976fps) (+) Audio --aid=1 --alang=jpn () (flac 2ch 48000Hz) Audio --aid=2 --alang=jpn (aac 2ch 48000Hz) (Paused) AV: 00:00:07 / 00:24:32 (0%) A-V: 0.000 [input] No key binding found for key '"'. [input] No key binding found for key 'C'. [input] No key binding found for key ':'. [input] No key binding found for key ''. [input] No key binding found for key 'Т'. [input] No key binding found for key 'о'. [input] No key binding found for key 'р'. [input] No key binding found for key 'е'. [input] No key binding found for key 'н'. [input] No key binding found for key 'т'. [input] No key binding found for key 'ы'. [input] No key binding found for key ''. (Paused) AV: 00:00:07 / 00:24:32 (0%) x0.91 A-V: 0.000 [input] No key binding found for key 'C'. [input] No key binding found for key 'B'. [input] No key binding found for key '-'. [input] No key binding found for key 'y'. [input] No key binding found for key 'n'. [input] No key binding found for key 'h'. [input] No key binding found for key 'g'. [input] No key binding found for key 'M'. [input] No key binding found for key 'a'. [input] No key binding found for key ''. [input] No key binding found for key 'C'. [input] No key binding found for key 'B'. (Paused) AV: 00:00:07 / 00:24:32 (0%) A-V: 0.000 [input] No key binding found for key '-'. [input] No key binding found for key 'y'. [input] No key binding found for key 'n'. [input] No key binding found for key 'h'. [input] No key binding found for key 'g'. (Paused) AV: 00:00:07 / 00:24:32 (0%) x1.10 A-V: 0.000 [input] No key binding found for key 'M'. [input] No key binding found for key 'a'. (Paused) AV: 00:00:00 / 00:24:32 (0%) A-V: 0.000 [input] No key binding found for key 'a'. [input] No key binding found for key 'c'. Screenshot: 'mpv-shot0001.jpg' [input] No key binding found for key 'a'. [input] No key binding found for key 'a'. [input] No key binding found for key 'c'. [input] No key binding found for key 'k'. [input] No key binding found for key '"'. Track switched: Video --vid=1 () (hevc 1920x1080 23.976fps) (+) Audio --aid=1 --alang=jpn () (flac 2ch 48000Hz) Audio --aid=2 --alang=jpn (aac 2ch 48000Hz) Speed: 1.21 A: 00:00:00 / 00:24:32 (0%) x1.21 Screenshot: 'mpv-shot0002.jpg'
A
Something is very peculiar happening here
(Paused) AV: 00:00:07 / 00:24:32 (0%) A-V: 0.000
[input] No key binding found for key '"'.
[input] No key binding found for key 'C'.
[input] No key binding found for key ':'.
[input] No key binding found for key ''.
[input] No key binding found for key 'Т'.
[input] No key binding found for key 'о'.
[input] No key binding found for key 'р'.
[input] No key binding found for key 'е'.
[input] No key binding found for key 'н'.
[input] No key binding found for key 'т'.
[input] No key binding found for key 'ы'.
[input] No key binding found for key ''.
Is it the moment when you drag the subtitles file in?
I think it's because sending loadfile discards all external files. You can try updating function reload to the following so it loads it. The 0.5 wait is a bit of a hack since otherwise loadfile clobbers it immediately
function reload(path, time_pos)
msg.debug("reload", path, time_pos)
local ext_subs = ''
local sid = mp.get_property_native("sid")
if sid ~= "no" then
for _, track in pairs(mp.get_property_native('track-list')) do
if track.type == 'sub' and track['id'] == sid and track['external'] then
ext_subs = track['external-filename']
end
end
end
msg.info("External sub:", ext_subs)
if time_pos == nil then
mp.commandv("loadfile", path, "replace")
else
mp.commandv("loadfile", path, "replace", "start=+" .. time_pos)
end
if ext_subs ~= '' then
mp.add_timeout(0.5, function ()
mp.commandv("sub-add", ext_subs)
end)
end
end
Also note that newer mpv has dedicated video-reload and audio-reload commands, and I believe these will also preserve position. But I think loadfile might still be better for network streaming since it seems like it's lower-level and ensures all state from before is discarded
my player does not start after adding the code, I may not understand exactly where to insert it in the script code
You don't add it, you replace the reload function in the script with the snippet I shared.
You don't add it, you replace the
reloadfunction in the script with the snippet I shared.
I figured it out and it works, thank you very much. I think this should be included in the main code. I also noticed that it only works with one file, that is, if files are added from different places and reloaded, only the last one added will be pulled up.
@4e6
Correct. If for some reason you have multiple external subtitle tracks, it should not be too hard to support that as well. You just need to change the inner loop of for _, track in pairs to capture the filenames of all external tracks instead of the currently selected one. I will leave that as an exercise for you.
I figured it out and it works, thank you very much. I think this should be included in the main code.
Glad that it worked in the end. You can make a pull request with the changes if you like to include them in the repo.