我如何编写VLC的插件以响应播放,暂停和停止事件?

问题描述 投票:8回答:2

我想为VLC编写一个非常简单的插件,当播放,暂停或停止播放媒体时发出Web请求。它与扰码插件非常相似。

我看到VLC支持插件和扩展(它们是非常简单的Lua脚本),但是我还没有找到有关如何执行此操作的任何信息。

我想我需要编写一个注册一些回调的插件-是吗?关于如何实现此目标的任何想法吗?解决这个问题似乎是一场艰巨的战斗。我可以使用Python吗?

lua vlc
2个回答
7
投票

我在Windows上使用VLC 2.2.1。

这里是一个简单的Lua插件,可识别播放/暂停/停止事件:

function descriptor()
  return {
    title = "VLC Dummy Extension",
    capabilities = { "playing-listener" }
  }
end

function activate()
end

function deactivate()
end

function meta_changed()
end

function playing_changed()
  vlc.msg.dbg("[Dummy] Status: " .. vlc.playlist.status())
end

注意:

  • VLC将在插件生命周期的某个时刻调用activate()deactivate()meta_changed()。您不需要包括它们,但是VLC会在调试日志中填充无用的“找不到功能”消息。
  • 如果插件的功能包含playing-listener,则VLC会期望playing-listener钩子并在适当的时候调用它(即使代码注释说该钩子名称为“ status_changed”)。
  • [playing_changed()返回“已停止”,“正在播放”,“已暂停”或“未知”。

运行:

  • 将插件保存为.lua文件,然后将其放在VLC的vlc.playlist.status()中:vlc.playlist.status()(Windows)或extensions folder(Linux)。
  • 通过工具加载>插件和扩展,重新加载扩展(无需重新启动VLC)。
  • 将其激活(“视图”下有一个选项,在插件描述符中以标题命名); %APPDATA%\vlc\lua\extensions\将被调用。
  • 要查看所有日志(~/.local/share/vlc/lua/extensions/调用),请打开工具>消息(Ctrl + M),设置要调试的级别并通过“ lua”进行过滤。

[播放新项目时要执行的操作:

  • activate()添加到插件的功能。
  • 添加相应的钩子vlc.msg
  • 使用input-listener获取当前项目(名称,URI,元数据等)。>>
  • 您可以将正在播放的内容发布到HTTP服务器。 VLC提供input_changed(),这意味着您必须为套接字编程。幸运的是,默认情况下VLC附带的扩展名vlc.input.item()具有用于vlc.input.item()的实用程序方法。我们可以偷那些。
  • 在此示例中,我只是发送一个裸线程GET:

vlc.net

如果我不在乎重定向或读取响应,则vlc.net比vlsub的版本简单得多:

vlsub

2
投票

[您有两个选择:编写一个lua模块(请查看MSN通知插件以获取示例代码)或编写一个C插件(类似于您已经找到的scrobbler)。

© www.soinside.com 2019 - 2024. All rights reserved.