Hacker News 中文摘要

RSS订阅

插件系统 -- Plugin System

文章摘要

IINA 1.4.0引入了插件系统,支持通过JavaScript扩展功能,包括控制播放、调用mpv API、访问网络和文件系统、添加自定义UI等。用户可通过简洁的API快速实现个性化功能,或直接复制粘贴代码片段使用。插件系统还支持事件监听,提供强大的播放控制和状态管理能力。

文章总结

IINA插件系统:扩展macOS现代媒体播放器的功能

IINA 1.4.0版本引入了插件系统,允许用户通过JavaScript扩展其功能。借助这一系统,用户可以控制播放、调用mpv API、访问网络和文件系统、添加自定义UI元素等。

简洁API,强大功能

只需几行代码,用户即可实现符合自身需求的功能。此外,通过官方用户脚本插件,用户可以直接将代码片段复制粘贴到IINA中,而无需编写插件包。例如,以下代码可以在视频顶部以大字体显示视频标题:

```javascript const { core, event, overlay } = iina;

event.on("iina.file-loaded", () => { overlay.simpleMode(); overlay.setContent(<p>${core.status.title}</p>); overlay.setStyle(p { font-size: 48px; }); overlay.show(); }) ```

另一个示例代码可以在视频暂停时最小化窗口,并在恢复时继续播放:

```javascript const { core, event } = iina;

event.on("mpv.pause.changed", () => { core.window.miniaturized = core.status.paused; });

event.on("iina.window-deminiaturized", () => { core.resume(); }); ```

插件系统的功能

插件系统支持多种功能,包括:

  • 核心功能:控制播放,获取/设置从窗口框架到字幕轨道的各种状态。
  • MPV:通过属性和钩子访问mpv API,实现高级播放控制。
  • 事件:注册和移除IINA及mpv事件的监听器。
  • HTTP:发起HTTP和XMLRPC请求。
  • 播放列表:控制播放列表并添加自定义播放列表上下文菜单项。
  • 字幕:注册与IINA用户界面集成的自定义字幕下载器。
  • 菜单:在插件菜单下添加带有键盘快捷键的菜单项。
  • 覆盖层:在视频顶部渲染基于webview的自定义内容。
  • 侧边栏视图:在侧边栏中添加带有自定义webview内容的标签页。
  • 独立窗口:显示基于webview的独立窗口,用于复杂的用户界面。
  • 全局控制器:生成并控制多个播放器实例。
  • 文件:访问用户文件系统或读写沙盒中的临时文件和数据文件。
  • 偏好设置:存储偏好设置并在IINA的偏好设置面板中显示设置页面。
  • 工具:显示系统对话框并运行自定义可执行文件。
  • 控制台:打印调试日志,可通过IINA的日志查看器查看。

开始构建插件

IINA安装包中包含一个iina-plugin命令行工具,帮助用户创建、构建和运行插件。此外,官方还提供了完整的文档,包含教程和API参考。

阅读文档

其他有用资源包括:

通过这些工具和资源,用户可以轻松扩展IINA的功能,打造个性化的媒体播放体验。

评论总结

评论主要围绕IINA媒体播放器的功能、用户体验和插件系统展开,观点多样且平衡。

  1. 用户体验与简洁性

    • 用户dekken_称IINA为“macOS的现代媒体播放器”,强调了其现代性。
    • 用户m3kw9表示虽然使用过VLC,但更喜欢IINA的简洁性:“i've used VLC, but i prefer this simplicity.”
    • 用户_diyar认为IINA“几乎忘记它不是操作系统的一部分”,说明其无缝融入用户体验:“IINA is the kind of app that disappears into the background.”
  2. 与其他播放器的比较

    • 用户dmix提到自己转向了Infuse 8,赞赏其网络共享和iCloud时间戳同步功能,认为无需复杂的Plex服务器:“The network sharing + iCloud timestamp syncing is the best thing ever.”
    • 用户9dev则质疑是否需要通用媒体播放器,认为内置工具已足够处理大多数媒体文件:“I’m just desperately trying to think of a use case for a universal media player.”
  3. 插件系统的潜力

    • 用户rickcarlino认为插件系统结合LLM可以为用户带来巨大价值,希望更多应用支持Lua或JS沙盒:“With LLMs being a thing now, plugin systems like this can bring a lot of value to users.”
    • 用户yoz探讨了IINA插件系统的技术细节,提出可以创建Webamp和Butterchurn插件的可能性:“So... someone could make a Webamp plugin?”
    • 用户jrmiii将IINA的插件架构与VS Code相提并论,认为其巧妙之处在于将媒体文件转化为交互体验的画布:“The plugin architecture here reminds me of what happened with VS Code.”
  4. 插件系统设计建议

    • 用户pizza询问构建优秀插件系统的一般建议,暗示大多数系统遵循相似原则:“Any general tips on the construction of a great plugin system?”

总结:IINA以其简洁性和现代性受到用户青睐,同时其插件系统被认为具有巨大潜力,能够为用户提供丰富的交互体验。