文章摘要
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-plugin-userscript。 - TypeScript定义:插件API的TypeScript定义,使用
iina-plugin命令行工具创建新插件时会自动包含。
通过这些工具和资源,用户可以轻松扩展IINA的功能,打造个性化的媒体播放体验。
评论总结
评论主要围绕IINA媒体播放器的功能、用户体验和插件系统展开,观点多样且平衡。
用户体验与简洁性:
- 用户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.”
与其他播放器的比较:
- 用户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.”
插件系统的潜力:
- 用户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.”
插件系统设计建议:
- 用户pizza询问构建优秀插件系统的一般建议,暗示大多数系统遵循相似原则:“Any general tips on the construction of a great plugin system?”
总结:IINA以其简洁性和现代性受到用户青睐,同时其插件系统被认为具有巨大潜力,能够为用户提供丰富的交互体验。