Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

EmbyStrmIntroMarker

手动为 STRM / 网盘剧集设置片头片尾跳过标记的 Emby 插件。原理:直接调用 Emby 的 IItemRepository.SaveChapters(),写入 MarkerType.IntroStart / IntroEnd / CreditsStart 三种 chapter marker。这是 Emby 客户端显示"跳过片头/片尾"按钮的 判断依据,跟这个标记是自动分析出来的还是手动填的没有关系,所以对 STRM 完全没有 兼容性问题——全程不需要真正读取视频流。

打点页面(Web/markereditor.html)是完全独立的静态网页,不挂在 Emby 后台菜单 下,也不依赖 Emby 前端的内部对象——早期版本用过 IHasWebPages 把页面注册进后台 菜单,但这个接口在不同 Emby 版本间不太稳定(4.9.5 上编译不过),干脆去掉,页面 改成拿 API Key 直连 REST 接口,兼容性更好也更简单。

1. 准备引用程序集

在你的 Emby 服务端安装目录里(Linux 一般在 /opt/emby-server/system,Windows 在 C:\Program Files\Emby-Server\system 附近,Docker 里进容器 find / -name "MediaBrowser.Controller.dll" 搜)找到这三个文件:

MediaBrowser.Common.dll
MediaBrowser.Model.dll
MediaBrowser.Controller.dll

拷贝到本项目的 embylibs/ 文件夹里(跟 EmbyStrmIntroMarker 项目文件夹同级)。

2. 编译

项目编译目标是 net6.0(不是 netstandard2.0——Emby 4.9.5 本身跑在真正的 .NET 运行 时上,直接编译成 net6.0 能免掉一堆类型版本对不上的麻烦)。用 .NET 6/7/8 SDK 都行:

cd EmbyStrmIntroMarker
dotnet build --configuration Release

编译产物在 EmbyStrmIntroMarker/bin/Release/net6.0/EmbyStrmIntroMarker.dll

3. 安装到 Emby

EmbyStrmIntroMarker.dll 拷到 Emby 的插件目录:

  • Linux: /opt/emby-server/plugins/(或你的实际安装路径下的 plugins 文件夹)
  • Windows: C:\ProgramData\Emby-Server\plugins
  • Docker: 挂载到容器内的 /config/plugins 目录

重启 Emby Server。这个插件没有后台配置页(故意去掉了 IHasWebPages,避免不同 Emby 版本内部接口不兼容的问题),装上之后控制台的"我的插件"里能看到它,但点进去 不会有设置界面——这是正常的,打点操作走的是下面单独的网页。

4. 生成一个 API Key

Emby 后台 → 高级 → API 密钥 → 新增一个 API 密钥,随便起个名字(比如 "IntroMarker"),复制生成的密钥,下一步要用。

5. 打开打点页面

Web/markereditor.html 是一个完全独立的网页,两种打开方式都行:

  • 直接双击在浏览器里打开(file:// 方式)
  • 或者放到你 NAS 上任意一个静态网站目录里(比如你已有的 nginx/BT 面板),用 http://你的NAS:某端口/markereditor.html 访问,手机也能用这个方式访问

打开后填两个东西:

  • 服务器地址:比如 http://192.168.1.10:8096
  • API Key:第 4 步生成的那个

点"连接",如果显示"已连接"就说明插件接口工作正常,可以进入 ① 媒体库白名单 → ② 选剧集 → ③ 整剧规则 / ④ 单集微调 的正常打点流程了。地址和 Key 会存在浏览器的 localStorage 里,下次打开会自动重连。

6. 使用方式

  1. ① 媒体库白名单:勾选允许这个工具打点的媒体库,保存。没勾选的库,插件的 所有接口都不会返回、也不允许写入,误操作不会碰到别的库。
  2. ② 选剧集:选剧集 → 选季 → 会列出这一季所有分集,以及已有的标记。
  3. ③ 整剧统一规则(可选):一次填好片头开始/结束、片尾时间(推荐用"距离 结尾还有多少秒"模式,兼容每集时长有几秒误差的情况),点"保存并应用",会 直接套到这部剧全部季全部集。
  4. ④ 单集微调:点集数名字在上面弹出内嵌播放器预览,拖到想要的位置点对应 的"标记为..."按钮,会自动把当前播放时间填进输入框(也可以直接手打 mm:ss), 每一集右边单独点"保存"。

已知限制

  • Emby 目前的 chapter 系统只支持 IntroStart / IntroEnd / CreditsStart 三种 跳过类型,不支持片尾结束点、重复片段(recap)等,客户端也只会用这三种来判断 显示按钮的时机。
  • 保存时会保留原有的普通 Chapter(章节)标记,只替换/新增这三种 marker。
  • 客户端要显示"跳过片头"按钮、以及片尾自动连播下一集,还需要在播放设置里把 相关选项打开(跟原生 Intro Skip 功能共用同一套客户端开关,插件本身不用额外 写代码去实现"自动跳到下一集",这是 Emby 客户端看到 CreditsStart 之后的原生 行为)。
  • 整剧规则里"距离结尾"模式依赖 Emby 已经扫描出该集的真实时长;STRM 如果还没被 扫描过(没有 RunTimeTicks),这一集会被跳过,返回结果里会提示跳过了几集。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages