bpking1 / embyExternalUrl

some emby/jellyfin scripts
MIT License
695 stars 124 forks source link

115直链 emby网页版跨域问题解决 #236

Closed lixuemin13 closed 2 months ago

lixuemin13 commented 3 months ago

很久没关注了,最近看到alist支持115的直链,就过来看看,整体解决思路跟之前天翼云盘一样。 远古博客:https://blog.738888.xyz/posts/emby_jellyfin_to_alist_directlink Snipaste_2024-06-21_18-54-53

运行shell命令,先运行第一条命令备份,再运行第二条命令去除crossorigin="anonymous"

cp /opt/emby-server/system/dashboard-ui/modules/htmlvideoplayer/plugin.js /opt/emby-server/system/dashboard-ui/modules/htmlvideoplayer/plugin.js_backup
sed -i 's/&&(elem\.crossOrigin=initialSubtitleStream)//g' /opt/emby-server/system/dashboard-ui/modules/htmlvideoplayer/plugin.js

~#### nginx的配置修改 我用的是分体的config 如果是总config,找到对应配置即可,修改/etc/nginx/conf.d/config/constant-mount.js下的配置将const cilentSelfAlistRule=[2, strHead["115"], alistPublicAddr]的strHead["115"]去掉,不去掉115会走alist的代理好像,没看到哪个配置可以关闭。~

测试之前安装emby-server-deb_4.7.11.0_amd64.deb,跟最新的 emby-server-deb_4.8.8.0_amd64.deb都没问题,中间的版本应该也是没问题,其他版还需自测。

chen3861229 commented 3 months ago

十分感谢提供了一个新的解决方案,我这边加到文档中可以吗?

不去掉 115 会走 alist 的代理好像,没看到哪个配置可以关闭

cilentSelfAlistRule 这个是 302 一次让客户端自身去请求 alist 的 /d 地址,然后由 alist 响应 302 再第二次到达网盘商公网直链,目的是解决部分客户端("Emby for iOS"和"Infuse")的进度条拖动黑屏的 bug,和走 alist 的代理无关,可能是 alist 的该驱动没有选 302 模式吗?

lixuemin13 commented 3 months ago

可以的 我看了,302到alist的/d地址带了https,我是emby https,alist用的http的问题,导致报了500没显示302,还以为是代理,这个没啥问题了

chen3861229 commented 3 months ago

文档已做引用来源的出处标记 904f2b56905650ecf031cf008d2f28159ee2cf21

ai-lg commented 3 months ago

文档已做引用标记 904f2b5

大佬,请问这个标记的方法是实现什么?是web端实现115挂载的资源直链播放吗?

chen3861229 commented 3 months ago

1.描述不够清晰,只是做了个出处来源标记,不用管这个 2.是的,具体参考本 issus 提供的参照方案和文档就行了

LiYefei commented 3 months ago

正受此问题困扰,回去试试

LiYefei commented 3 months ago

修改后web浏览器确实可以115直链,但字幕好像出不来,多音轨切换后也还是初始播放的音轨

chen3861229 commented 3 months ago

这些貌似和当前 issus 无关

但字幕好像出不来

1.这个一般是挂载工具的挂载点挂了,导致 emby 服务端读取不到外挂字幕的文件流,需要先重启挂载工具后,再重启 emby 解决

2.音轨那个问题没复现过,不过大概率和 1 是同一个问题

LiYefei commented 3 months ago

挂载没问题。又找了个外挂字幕的片子可以,内封字幕不行。好像浏览器播放本来就有这个约束?如果这样,给Web浏览器传字幕时是不是可以把内封字幕过滤掉 音频的问题好像跟解码能力有关,EAC、Dobly、DTS这些Web端没声

LiYefei commented 3 months ago

我找了AAC音频,带3个音轨的电影(依次英语、国语、粤语),确定挂载是正常(试过切外挂字幕的电影,是好的),然后还是能复现web端播放切音轨无效的问题。 具体操作是打开电影,显示音轨默认勾选粤语,拖动进度条找有说话的片段,发现实际播放的是英语音频,然后手动切换了3次不同音轨,每次切换完成后实际都只播英语音频,过程中也有几次拖进度条找说话片段操作。 日志我附在下面了,大佬有空时可以看看。 access.log error.log

bpking1 commented 3 months ago

我找了AAC音频,带3个音轨的电影(依次英语、国语、粤语),确定挂载是正常(试过切外挂字幕的电影,是好的),然后还是能复现web端播放切音轨无效的问题。 具体操作是打开电影,显示音轨默认勾选粤语,拖动进度条找有说话的片段,发现实际播放的是英语音频,然后手动切换了3次不同音轨,每次切换完成后实际都只播英语音频,过程中也有几次拖进度条找说话片段操作。 日志我附在下面了,大佬有空时可以看看。 access.log error.log

web端本身不支持

LiYefei commented 3 months ago

同一部影片我在alist里试了,用web方式播放,确实也没有音轨可选,默认播发英语音轨 对于Web端播放,建议是不是可以把不支持选的字幕和音轨屏蔽掉,否则让选择又不生效就成了问题,这点alist里打开就不给选 当然这个优化的优先级不高

chen3861229 commented 3 months ago

对于Web端播放,建议是不是可以把不支持选的字幕和音轨屏蔽掉

额,这样做不是太好,已经超出了该脚本的本职工作了,这样强行去过滤会导致其它客户端出问题,这个工作本职是 emby 官方应该去解决的

可选转码方案 https://github.com/chen3861229/embyExternalUrl/issues/51

chaomarks commented 2 months ago

运行shell命令,先运行第一条命令备份,再运行第二条命令去除crossorigin="anonymous"

我试了确实可以,字幕可以出来,外挂的字幕,问题是声音有的视频没有,alist网页也没有不知道是什么原因

chaomarks commented 2 months ago

运行shell命令,先运行第一条命令备份,再运行第二条命令去除crossorigin="anonymous"

我试了确实可以,字幕可以出来,外挂的字幕,问题是声音有的视频没有,alist网页也没有不知道是什么原因

谷歌了下,是浏览器不支持音频编码,大部分是美剧

chen3861229 commented 2 months ago

浏览器不支持音频编码

1.浏览器不支持 DTS 杜比等高规格音频,可以参照开启 允许转码 参数

https://github.com/chen3861229/embyExternalUrl/issues/51