You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MPV播放器loop-file属性持久化Lua脚本异常问题求助

MPV播放器loop-file属性持久化Lua脚本异常问题求助

大家好,我最近在写一个Lua脚本,想实现MPV播放器退出时保存loop-file的循环状态,下次启动时自动恢复,但遇到了棘手的问题:第一次生成状态文件后,后续退出播放器时文件内容不再更新,而且启动时也没法从文件里正确加载之前保存的循环状态。

我目前用的脚本代码是这样的:

local filepath = mp.command_native({"expand-path", "~~/loop-file-state"})

local loadfile = io.open(filepath, "r")

if loadfile then
    set_loop_file = string.sub(loadfile:read(), 11)
    loadfile:close()
    mp.set_property_number("loop-file", set_loop_file)
end

mp.register_event("shutdown",
function()
    local savefile  = io.open(filepath, "w+")
    savefile:write("loop-file=" .. mp.get_property("loop-file"), "\n")
    savefile:close()
end
)

我已经尝试过两种修改,但都没解决问题:

  • 尝试把写入文件的内容改成带双引号的格式:
    savefile:write("loop-file=\"" .. mp.get_property("loop-file") .. "\"", "\n")
    
  • 之前string.sub的起始位置是8,后来我改成了11(对应"loop-file="的长度),但依然没用。

有意思的是,我写的保存/恢复音量的脚本是完全正常的,代码如下:

local filepath = mp.command_native({"expand-path", "~~/volume"})

local loadfile = io.open(filepath, "r")

if loadfile then
    set_volume = string.sub(loadfile:read(), 8)
    loadfile:close()
    mp.set_property_number("volume", set_volume)
end

mp.register_event("shutdown",
function()
    local savefile  = io.open(filepath, "w+")
    savefile:write("volume=" .. mp.get_property("volume"), "\n")
    savefile:close()
end
)

为了排查问题,我用socat命令查看了两个属性的返回值,发现了一个明显差异:

  • 正常工作的volume属性返回的是不带引号的数字:
    % echo '{ "command": ["get_property", "volume"] }' | socat - "/tmp/mpv-socket" | jq .
    {
      "data": 56.519417,
      "request_id": 0,
      "error": "success"
    }
    
  • 有问题的loop-file属性返回的是带双引号的字符串:
    % echo '{ "command": ["get_property", "loop-file"] }' | socat - "/tmp/mpv-socket" | jq .
    {
      "data": "inf",
      "request_id": 0,
      "error": "success"
    }
    

我猜测会不会是因为loop-file的返回值是字符串类型(带引号),而volume是数字类型,导致脚本在读取和写入时处理逻辑出了问题?有没有大佬能帮我分析下问题所在,或者给个可行的修复方案?

备注:内容来源于stack exchange,提问作者Ahmad Ismail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:23:03