解决Emby硬解字幕偏移
前言
使用Emby4.8.x遇到过硬解时字幕偏移问题(12代u)
在4.8还是beta版的时候已经看到贴吧上有人讨论过字幕偏移问题,但到正式版还是一致没有修复。
近几天意外搜到文章有解决方案(临时),使用Emby的【Diagnostics PlugIn】插件替换ffmpeg中字幕覆盖在视频上的位置来修正偏差。
但是Diagnostics插件是用于测试调试的,重启或一段时间后会自动重置,所以在MP写了个临时性的插件【诊断参数调整】(Emby专用),目前迭代到1.2 1.3
更新
- 1.3:修复兼容问题(1080p与2160p视频字幕显示差异)、由webhooks的播放通知为主要执行方式。——240308
随着1.3版本改动本文章
Emby安装插件
在Emby-插件-catalog,搜索"diagnostic"
安装,然后重启Emby。
MP安装配置插件
在MP安装该插件
打开插件默认配置:
参数粗浅解读(有错误劳烦指正):
此处指的是将字幕视为视频流,以overlay滤镜将字幕叠加到原始视频中。
W、H分别表代表输出视频的宽度和高度;w、h分别代表输入视频的宽度和高度。所以用(W-w)/x和(H-h)/x计算输入视频相对于输出视频的偏移量(有点晕😵💫)。
简单测试过,W与w,H与h的值好像相差无几,所以作差后再除变化不大。
总而言之,替换文本,可以写为
x=W/4:y=h/4:repea(๐•ᴗ•๐)ast=0
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
(不合适再调数字)
也可以试试
x=w/4:y=H/4:repea(๐•ᴗ•๐)ast=0
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
测试过正常接收到媒体信息就没问题。
使用
修正字幕偏移用途,在默认配置下,只需要打开【启动插件】就可以保存
测试一下,登录Emby或点击一次播放,查看docker日志或MP该插件日志会显示
(首次打开1080p视频)
(第二次打开1080p视频)
(首次打开2160p视频)
亲自跑到Emby-高级-Diagnostic Options可以看到
(这是2160p视频所使用的参数)
已经自动按照要求填上、勾选了。
至此,已经完成了。
测试
字幕偏移情况
🤔
修正后
✌
经测试大部分视频应该没问题,如果你使用此插件时,看某资源视频发现有异常,劳烦说明一下😋
优缺
可以临时性解决Emby一直不修复的问题;
当播放视频分辨率与上次视频分辨率不一致时,在Emby通知延迟和已加载旧位置字幕影响下,需要片刻后才会加载到新位置字幕,可以拉一下进度,或关闭视频再次打开(建议)。
(局限性不小,非必要还是建议用兼容性好的jellyfin)
参考:https://opve.cn/archives/983.html