Emby高级教程:修改支持4K UHD 文件夹原盘
【写作说明】
本人是4K UHD 原盘收集 的重度用户,一直使用Emby来管理硬盘里面的大量原盘。目前的情况是Emby可以获取到1080P原盘的媒体信息并进行串流,但是对于2160p 4K UHD 原盘只能进行搜索删除的管理和海报匹配,不能获取其媒体音轨字幕信息并进行串流。
本人大部分的观影采用碟机,同时也采用AppleTV + infuse + emby插件 (看剧集居多) 或者 iphone + infuse + emby插件 (看不完回床上继续) 来观影。由于碟机的mkv兼容性极差,所以收集mkv是不可能的了,也不想搞多版本,想想还是得原盘啊。
对于影音的分类和管理,纯手动的话还是有查找难、洗版难、移动分类难的问题。有大量影片的话更加重了工作量。我现在使用硬链接+ Emby完成影片的查找、分类、删除和移动工作,基本上告别了文件管理器中的操作。(为此还开发了一个chrome的 emby 插件,目前功能还比较简陋)
【目前状况】
当前Emby版本4.6.7.0
【Emby错误日志展示】
当Emby添加UHD 文件夹原盘的时候,查看日志发现如下信息:
2022-08-14 09:33:57.877 Error App: Error in ffprobe
*** Error Report ***
Version: 4.7.5.0
Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3
Operating system: Linux version 4.4.180+ (root@build3) (gcc version 8.5.0 (GCC) ) #42661 SMP Mon Jun 27 15:05:48 CST 2022
Framework: .NET 6.0.2
OS/Process: x64/x64
Runtime: system/System.Private.CoreLib.dll
Processor count: 4
Data path: /config
Application path: /system
System.Exception: System.Exception: Clip info file 00002.clpi has an unknown file type HDMV0300.
at BDInfo.BDROM.Scan()
at BDInfo.BdInfoExaminer.GetDiscInfo(String path)
at BlurayMounter.BlurayMounter.Mount(ReadOnlyMemory`1 mediaPath, ReadOnlyMemory`1 container, CancellationToken cancellationToken)
at Emby.Server.Implementations.IO.MediaMountManager.Mount(ReadOnlyMemory`1 mediaPath, ReadOnlyMemory`1 container, CancellationToken cancellationToken)
at Emby.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](MetadataResult`1 metadataResult, MetadataRefreshOptions options, LibraryOptions libraryOptions, CancellationToken cancellationToken)
at Emby.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, MetadataResult`1 itemResult, String logName, MetadataRefreshOptions options, LibraryOptions libraryOptions, RefreshResult refreshResult, CancellationToken cancellationToken)
Source: BlurayMounter
TargetSite: Void Scan()
通过分析发现问题出在BlurayMounter这个插件上,它并不能识别HDMV0300这个格式的clpi,实际上在蓝光文件夹的结构上,如果我们只是想找到最终的m2ts文件并播放,HDMV0300和HDMV0200是没什么区别的。
【修改BlurayMounter.dll文件】
使用 .Net反编译工具 dnSpyEx/dnSpy 的最新版本6.2 修改BlurayMounter.dll文件。
BlurayMounter.dll 文件在Emby安装目录的system文件夹下的plugins文件夹下,请注意备份。
请在Emby关闭的情况下修改替换
1、使用dnSpy打开 BlurayMounter.dll 文件
2、修改BlurayMounter.dll > BDInfo > TSPlaylistFile类 > Scan方法
将
if (this.FileType != "MPLS0100" && this.FileType != "MPLS0200")
修改为:
if (this.FileType != "MPLS0100" && this.FileType != "MPLS0200" && this.FileType != "MPLS0300")
3、修改BlurayMounter.dll > BDInfo > TSStreamClipFile类 > Scan方法
将
if (this.FileType != "HDMV0100" && this.FileType != "HDMV0200")
修改为
if (this.FileType != "HDMV0100" && this.FileType != "HDMV0200" && this.FileType != "HDMV0300")
4、保存修改后的dll模块
5、使用修改后的BlurayMounter.dll替换源文件即可,Linux下请注意修改权限。
【效果展示】
【总结】
目前 appletv/iphone 配合 infuse 在挂载 Emby 的情况下基本上可以在不转码的情况下播放除了肉酱原盘外的所有资源。
【补充:关于und的问题】
由于Emby使用ffmpeg和ffprobe进行媒体信息的获取和串流,此工具最终是要定位到蓝光的m2ts文件,并在其中查找影片的音轨语言和字幕语言,但是目前的大部分蓝光,音轨/字幕语言信息并不存储在m2ts文件中,而是存储在蓝光文件夹下的BDMV/PLAYLIST/*.mpls文件中,所以就会出现音轨或字幕语言显示undefined未指定的问题。当我们在电脑上将m2ts直接拖到播放器中一样也是看不到音轨/字幕语言。这点估计将来也是无解。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~










半世空城
校验提示文案
无双明镜止水
校验提示文案
值友9503472398
校验提示文案
c344579765
校验提示文案
值友6890680749
去看看
校验提示文案
jacksky6
https://pan点baidu点com/s/1suzErHLNZuJRYJxNi_uPeg?pwd=si5w
校验提示文案
宫保鸡丁盖浇饭
校验提示文案
lifigo
校验提示文案
李败五
校验提示文案
niSEmONo-C
校验提示文案
已签到
校验提示文案
热心市民李大爷
校验提示文案
hao82
校验提示文案
值友1482438524
校验提示文案
zchjoe
校验提示文案
悬崖2011
校验提示文案
KANEIII
公司看是ipad infuse看的
校验提示文案
无双明镜止水
我的问题是单独刮某一部2160P电影原盘目录,就能成功刮出包括主视频、片头及广告在内的所有视频文件,结果是在Jellyfin中显示一堆乱七八糟的电影,是根据m2ts文件名查找到的最接近的电影,比如文件名013.m2ts就刮出阿波罗十三号这部电影。
如果刮原盘目录的上一级文件夹(大家下载电影一般会集中存在某一个目录中,刮也是刮这个目录),会刮出一个视频,我分析是根据原盘文件夹名刮出来的,而不是刮到视频文件(*.m2ts),因为刮出来的唯一视频,路径没有指定任何视频文件,而是路径为原盘文件夹本身,在播放端我使用的是KODI,播放会显示“一个或多个项目播放失败。更多相关信息见日志。”,原因就是路径没有指定到具体视频文件,软件不晓得你要播放的是什么
校验提示文案
我是小洛洛
校验提示文案
益华991
校验提示文案
顽石石
校验提示文案
Diluka
校验提示文案
益华991
校验提示文案
jacksky6
https://pan点baidu点com/s/1suzErHLNZuJRYJxNi_uPeg?pwd=si5w
校验提示文案
我是小洛洛
校验提示文案
值友6890680749
去看看
校验提示文案
无双明镜止水
校验提示文案
无双明镜止水
我的问题是单独刮某一部2160P电影原盘目录,就能成功刮出包括主视频、片头及广告在内的所有视频文件,结果是在Jellyfin中显示一堆乱七八糟的电影,是根据m2ts文件名查找到的最接近的电影,比如文件名013.m2ts就刮出阿波罗十三号这部电影。
如果刮原盘目录的上一级文件夹(大家下载电影一般会集中存在某一个目录中,刮也是刮这个目录),会刮出一个视频,我分析是根据原盘文件夹名刮出来的,而不是刮到视频文件(*.m2ts),因为刮出来的唯一视频,路径没有指定任何视频文件,而是路径为原盘文件夹本身,在播放端我使用的是KODI,播放会显示“一个或多个项目播放失败。更多相关信息见日志。”,原因就是路径没有指定到具体视频文件,软件不晓得你要播放的是什么
校验提示文案
KANEIII
公司看是ipad infuse看的
校验提示文案
悬崖2011
校验提示文案
c344579765
校验提示文案
zchjoe
校验提示文案
值友9503472398
校验提示文案
值友1482438524
校验提示文案
hao82
校验提示文案
热心市民李大爷
校验提示文案
已签到
校验提示文案
niSEmONo-C
校验提示文案
李败五
校验提示文案
lifigo
校验提示文案