Jump to content

LocalThemeExtractor


Recommended Posts

Posted

因为Download Local Theme Songs 插件基本失效我做了该插件

本地主题提取器 - Emby 插件

从本地媒体文件中提取主题曲(Emby Theme Songs)的 Emby 插件,无需依赖任何外部下载服务。

功能

  • 电视剧:利用 Emby 已有的片头标记(Intro Markers),用 ffmpeg 从本地媒体文件中提取片头音乐作为 theme.mp3
  • 电视剧片尾回退:对没有片头标记的电视剧,自动检测片尾并提取片尾音乐
  • 电影:通过音频静音检测(silencedetect)和视频黑帧检测(blackdetect)定位片尾字幕起始点,提取片尾音乐
  • 固定窗口兜底:对无黑帧、无静音的电影,可选提取最后 N 秒作为主题曲

特性

  • 零外部依赖:仅使用 Emby 自带的 ffmpeg,不需要网络下载
  • 内存管道处理:ffmpeg 通过 pipe:1 输出到内存,无中间临时文件
  • 带宽优化:使用 -map 0:a:0 仅读取音频流,对 CloudDrive/网盘 FUSE 挂载场景大幅节省流量
  • 三级检测策略:silencedetect(~2MB)→ blackdetect(~200MB)→ 固定窗口(0 额外 I/O)
  • GPU 加速:blackdetect 支持 nvdec/vaapi 等硬件视频解码
  • 只读文件系统感知:自动检测并跳过不可写的挂载点,避免浪费检测流量
  • 支持 .strm 文件:自动解析 strm 内容获取实际媒体路径
  • 多媒体库选择:GenericEdit UI 界面,支持多选媒体库

安装

  1.  Releases 下载 LocalThemeExtractor.dll
  2. 将 DLL 复制到 Emby 的插件目录:
    • Docker:/config/plugins/
    • Windows: %AppData%\Emby-Server\plugins\
  3. 重启 Emby Server

构建

dotnet build src/LocalThemeExtractor.csproj -c Release
 

输出文件:src/bin/Release/netstandard2.0/LocalThemeExtractor.dll

配置

安装后在 Emby 管理后台 → 插件 → Local Theme Extractor 中配置:

选项 说明 默认值
媒体库范围 选择要处理的媒体库(不选 = 全部) 全部
并行线程数 同时处理数量 1
覆盖已有 已存在 theme.mp3 时是否重新提取
提取片头 使用 Emby 片头标记提取电视剧主题曲
优先季数 优先从第几季提取(0=最早有标记的季) 1
最短片头秒数 低于此值视为广告,跳过 20
片尾回退 无片头标记时尝试检测片尾
电影片尾检测 检测电影片尾黑帧/静音并提取
片尾扫描秒数 从片尾往前扫描多少秒 600
片尾最短秒数 检测到的片尾低于此值不提取 30
固定窗口回退 检测失败时提取最后 N 秒
回退窗口秒数 固定窗口提取长度 90
硬件解码 启用 GPU 加速(blackdetect 时有效)
解码器名称 nvdec / vaapi / videotoolbox / dxva2 nvdec
音频码率 输出 MP3 码率 192 kbps

检测策略

电视剧(有片头标记):
  直接从标记时间段提取 → theme.mp3

电视剧(无片头标记,启用回退):
  silencedetect → blackdetect → 跳过

电影:
  silencedetect(~2MB)
    ↓ 命中 → 提取
    ↓ 未命中
  blackdetect(~200MB)
    ↓ 命中 → 提取
    ↓ 未命中
  固定窗口(可选)
    ↓ 启用 → 提取最后 N 秒
    ↓ 未启用 → 跳过
 

计划任务

插件注册为 Emby 计划任务「提取本地主题曲」,默认每周日凌晨 3 点自动执行。也可在 Emby 管理后台 → 计划任务中手动触发。

兼容性

  • Emby 服务器 4.8+
  • .NET 标准 2.0
  • Linux / Windows / macOS(需要 ffmpeg 可用)
  • Docker 容器(linuxserver/emby 等)

许可

麻省理工学院



https://github.com/NevermoreN/Emby_LocalThemeExtractor

Posted

@AnsellIs the plugin itself in englisch or chinese? Pretty sure you would catch more people with an additional Repo Readme in englisch.

Posted
58 minutes ago, sh0rty said:

@Ansell插件本身是英文还是中文?我很确定你会发现更多人,多拿一份英文Repo Readme。

中文的 ,我自己写的,插件很简单 chrome翻译即可 ,不是什么很难的事情, 默认设置即可, 依赖片头扫描的数据。我不想写英文的readme 这个插件其实本来是我自己用的 

  • Like 1
Posted
59 minutes ago, sh0rty said:

@Ansell插件本身是英文还是中文?我很确定你会发现更多人,多拿一份英文Repo Readme。

你也可以让luke加入到emby插件目录中

  • Thanks 1
Posted

2026-06-11 00:36:51.258 INFO App: [LocalThemeExtractor]: Start LocalThemeExtractor ...
...
2026-06-11 00:36:51.275 ERROR App: [LocalThemeExtractor]: Core task error
    *** Encountered Exception ***
    Type: System.IO.FileNotFoundException
    Message: Could not load file or volume 'SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies.

Posted
15 hours ago, WDPR4100 said:

2026-06-11 00:36:51.258 信息应用:[LocalThemeExtractor]: 启动 LocalThemeExtractor ...
......
2026-06-11 00:36:51.275 错误 应用: [LocalThemeExtractor]: 核心任务错误
*** 遇到异常 ***
类型: System.IO.FileNotFoundException
消息:无法加载文件或卷 'SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' 或其依赖之一。

晚点我有空了看看

Posted
19 hours ago, WDPR4100 said:

2026-06-11 00:36:51.258 INFO App: [LocalThemeExtractor]: Start LocalThemeExtractor ...
...
2026-06-11 00:36:51.275 ERROR App: [LocalThemeExtractor]: Core task error
    *** Encountered Exception ***
    Type: System.IO.FileNotFoundException
    Message: Could not load file or volume 'SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies.

日志不够多,你缺少SkiaSharp,但我的插件好像本身没引用SkiaSharp,去更新我的新版本插件(v1.2.0.0),你的emby是什么版本?

Posted
19 hours ago, WDPR4100 said:

2026-06-11 00:36:51.258 INFO App: [LocalThemeExtractor]: Start LocalThemeExtractor ...
...
2026-06-11 00:36:51.275 ERROR App: [LocalThemeExtractor]: Core task error
    *** Encountered Exception ***
    Type: System.IO.FileNotFoundException
    Message: Could not load file or volume 'SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies.

你去下载1.3.0版本 我新推送的,应该不是我的问题,这个报错好像是框架的问题,也许是你的环境?emby本身?

Posted
19 hours ago, WDPR4100 said:

2026-06-11 00:36:51.258 INFO App: [LocalThemeExtractor]: Start LocalThemeExtractor ...
...
2026-06-11 00:36:51.275 ERROR App: [LocalThemeExtractor]: Core task error
    *** Encountered Exception ***
    Type: System.IO.FileNotFoundException
    Message: Could not load file or volume 'SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies.

我需要更多日志

Posted
On 6/10/2026 at 5:27 PM, sh0rty said:

@AnsellIs the plugin itself in englisch or chinese? Pretty sure you would catch more people with an additional Repo Readme in englisch.

我更新了英文版README.md

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...