EstrellaXD / Auto_Bangumi

AutoBangumi - 全自动追番工具
https://autobangumi.org
MIT License
6.73k stars 349 forks source link

[Feature Request]自动生成STRM文件 #428

Open BloodBladeW opened 1 year ago

BloodBladeW commented 1 year ago

功能改进

希望可以增加一个生成STRM文件的功能,使用STRM文件可以让EMBY等程序的客户端直接读取指定的外部路径。 使用这个功能可以将视频保存到网盘或者对象存储等云端存储中,播放时客户端会直接从云端读取文件。 而使用传统的rclone挂载的话,播放时会把文件从云端缓存倒服务器上,然后再从服务器传输到客户端。

这个功能可以让没有大量存储的设备也可以作为媒体服务器。

大概可以像这样:

一个存放STRM文件夹的路径,这个目录内部的结构和保存视频的目录一样,只不过其中保存的是STRM文件。而STRM文件的文件名和视频文件相同,只有扩展名不同。

一个可以用户自定义设置的路径前缀,例如https://storage.example.com/videos/

STRM文件的内容由自定义的前缀和视频文件的相对路径拼接起来。

例如视频的路径是 /download/Bangumi/A/Season 1/A S01E01.mp4,STRM保存路径是/download/STRM/,生成的STRM则位于/downloads/STRM/A/Season 1/A S01E01.strm,而STRM文件的内容是https://storage.example.com/videos/Bangumi/A/Season 1/A S01E01.mp4

这样的话,将/download/STRM/挂载到Emby或者Jellyfin中,然后将/downloads/Bangumi/的内容上传到云端,在客户端播放时就会直接从云端加载视频文件,而不经过服务端。

除了http之外,也支持别的协议,这是Emby文档中STRM文件的示例:https://emby.media/support/articles/Strm-Files.html,里面提到了还支持smb,本地路径等等

这个方法有两个缺点,但我觉得应该不是什么问题: 1.无法服务端转码,毕竟服务端不再负责提供视频文件了。但是现在客户端解码能力都很强,很少遇到要服务端转码的情况了。 2.Plex把这个功能砍了。这个没办法,只能用于Emby和Jellyfin用户了。

EstrellaXD commented 1 year ago

AB 不能直接管理文件系统中的文件,我觉得你的需求只需要一个脚本读取文件目录生成就行了。如果 AB 要管理可能会牵扯很多别的东西。

sakarie9 commented 12 months ago

跑个题,我测试过emby和jellyfin的STRM,发现两者都有些问题

emby:流量依然经过服务器,即媒体文件服务器->emby服务器->用户,而不是预计的媒体文件服务器->用户

jellyfin:没有上面emby的问题,但是新问题是无法读取放在jellyfin服务器内STRM文件旁的外挂字幕,参考 https://github.com/jellyfin/jellyfin/issues/9980