Lua从播放列表中删除 - VLC插件

我试图在播放列表中删除当前正在播放的文件。我有一些用 Lua 编写的插件可以做到这一点,但此时文件仍在使用中。

因此,我需要在脚本中进行短暂的等待。

function nexttrack()
   vlc.playlist.delete(itemId)
   vlc.playlist.next()
   delete()
end

function delete()
   os.remove(filename) -- 此时什么也不做
end

我尝试过 os.execute(sleep 1) 和 os.execute(ping ....),但通常在尝试运行 os.execute 时,Vlc 会崩溃!

当我从 messageBox 运行 delete() 时,文件将被删除。

有人有提示可以使其正常运行吗?

点赞
用户2546626
用户2546626

你可以使用 os.time 和循环来模拟繁忙等待。

Lua 5.1(普通的VLC构建版本所使用的)标准库没有提供睡眠/等待操作的函数。

对于带有 LuaJIT 的VLC,您可以使用 ffi库 访问带有 sleep 函数的 DLL 函数和系统库。

查看 VLC Lua API,可能会有 misc.mdatemisc.mwait 是您正在寻找的内容。

2016-01-14 08:31:29
用户933153
用户933153

我用一个循环来测试/等待我的 ItenId 值(Vlc 播放列表中的 TrackID)的变化,已经做到了!

function nexttrack()
   vlc.playlist.delete(itemId)
   vlc.playlist.next()
   while probe() == itemId
   do
       vlc.msg.info("wait")
   end
   close()
   os.remove(filename)
end
2016-01-14 09:17:01