{"id":30742287,"url":"https://github.com/cp0204/smartstrm","last_synced_at":"2026-02-19T15:05:50.838Z","repository":{"id":309664337,"uuid":"1033794002","full_name":"Cp0204/SmartStrm","owner":"Cp0204","description":"一个媒体库 STRM 文件生成工具。和 Emby 优雅配合，媒体资源丝滑入库，支持 302 直链播放，支持同步删除。 配合 Quark-Auto-Save, CloudSaver, Emby 力求即存即看。🥳","archived":false,"fork":false,"pushed_at":"2025-08-28T06:08:46.000Z","size":345,"stargazers_count":60,"open_issues_count":2,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-28T12:48:34.729Z","etag":null,"topics":["115","alist","cloud189","clouddrive2","emby","jellyfin","openlist","strm"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/cp0204/smartstrm","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cp0204.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-07T10:59:40.000Z","updated_at":"2025-08-28T06:08:49.000Z","dependencies_parsed_at":"2025-08-13T06:28:11.133Z","dependency_job_id":"154e5006-ada0-4f4d-a195-720658b19487","html_url":"https://github.com/Cp0204/SmartStrm","commit_stats":null,"previous_names":["cp0204/smartstrm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Cp0204/SmartStrm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cp0204%2FSmartStrm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cp0204%2FSmartStrm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cp0204%2FSmartStrm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cp0204%2FSmartStrm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cp0204","download_url":"https://codeload.github.com/Cp0204/SmartStrm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cp0204%2FSmartStrm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273539297,"owners_count":25123499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["115","alist","cloud189","clouddrive2","emby","jellyfin","openlist","strm"],"created_at":"2025-09-04T01:41:39.727Z","updated_at":"2026-02-19T15:05:50.827Z","avatar_url":"https://github.com/Cp0204.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://github.com/Cp0204/SmartStrm/raw/refs/heads/main/img/icon.svg\" width=\"128\" height=\"128\"\u003e\n\n# SmartStrm\n\n一个媒体库 STRM 文件生成工具。\n\n和 Emby 优雅配合，媒体资源丝滑入库，支持 302 直链播放，支持同步删除远端文件。\n\n配合 Quark-Auto-Save/CloudSaver, OpenList, Emby 力求即存即看。🥳\n\n[![releases][releases-image]][docker-url] [![docker-pulls][docker-pulls-image]][docker-url] [![docker-image-size][docker-image-size-image]][docker-url] [![pro][pro-image]][pro-url] [![telegram][telegram-image]][telegram-url]\n\n[telegram-image]: https://img.shields.io/badge/Telegram-2CA5E0?logo=telegram\u0026logoColor=white\n[releases-image]: https://img.shields.io/github/tag/cp0204/smartstrm?label=releases\n[docker-pulls-image]: https://img.shields.io/docker/pulls/cp0204/smartstrm?logo=docker\u0026\u0026logoColor=white\n[docker-image-size-image]: https://img.shields.io/docker/image-size/cp0204/smartstrm?logo=docker\u0026\u0026logoColor=white\n[github-url]: https://github.com/Cp0204/smartstrm\n[docker-url]: https://hub.docker.com/r/cp0204/smartstrm\n[telegram-url]: https://t.me/smartstrm\n[pro-image]: https://img.shields.io/badge/SmartStrm-Pro-FFC107?logo=simkl\u0026logoColor=white\u0026labelColor=00A2E9\n[pro-url]: https://licenserver.0x69.win/store/smartstrm\n\n[快速部署](#部署) | [保姆教程](#第三方教程) | [进阶玩法](#进阶使用) | [常见答疑](#qa)\n\n![main_page](https://github.com/Cp0204/SmartStrm/raw/refs/heads/main/img/main.png)\n\n\u003c/div\u003e\n\n\u003e [!TIP]\n\u003e\n\u003e 有不少新手提到希望有较详细的视频或图文教程，因为~~作者很懒~~ ~~想把有限的时间花在代码上~~ 写教程宁愿写代码。**即日起，各位大佬在公众号、B站、知乎、值得买等平台发布 SmartStrm 教程，图文视频均可，对其他用户有帮助的，根据内容质量可兑换1~2年Pro，已购可续**，内容可以但不限于在各NAS系统的部署方法、和 OpenList、QAS、CS 联动配置、Emby、Jellyfin 入库配置、302代理等。**注意，教程演示请勿使用国内版权资源。**\n\u003e\n\u003e **兑换方式：** 将内容链接、平台登录截图（证明账号所有权）邮件到 Cp0204(at)qq.com\u003csup\u003e[1]\u003c/sup\u003e，这则公告还挂着就长期有效。参加并兑换成功默认视为授权 SmartStrm 对内容公开引用、保留原作者信息前提下的[整理和转载](#第三方教程)。\n\u003e\n\u003e * *[1] 邮件不回复任何一对一的使用咨询，如果你有此类问题，请加TG群交流*\n\u003e\n\u003e *如果教程涉及 Pro 功能，但你还没有，可以先邮件发内容规划（什么平台发什么内容），领取 5 天体验*\n\n## 特性\n\n- 支持 OpenList、WebDAV、夸克网盘、115网盘、天翼云盘、123云盘 等网络驱动\n- 任务管理\n  - 基于 Crontab 的定时任务\n  - 单个任务独立日志\n  - 任务工具箱：内容替换、一键清理\n- STRM 生成\n  - 目录时间检查\n  - 增量/同步生成：可清理远端已删文件\n  - 指定生成的媒体后缀、文件大小阈值\n  - 指定复制的文件后缀\n  - 本地存储实时监听生成\n- Webhook\n  - 联动 QAS、CloudSaver 转存即触发任务\n  - 配合油猴脚本，网页转存即触发任务\n  - Emby 中删除媒体，同步删除远端文件\n  - CloudDrive2 文件变更通知实时触发任务 (Pro)\n- 插件系统\n  - STRM内容替换、非法文件名修正 等插件，支持任务级配置\n  - 飞牛影视刷新 插件 (Pro)\n- 粗糙但极其友好的管理页面\n  - 存储浏览、批量重命名\n  - 任务日志查看\n- 一站式 Emby Jellyfin Plex 302 直链播放 (Pro)\n\n## 部署\n\n部署命令\n\n```bash\ndocker run -d \\\n  --name smartstrm \\\n  --restart unless-stopped \\\n  --network host \\\n  -v /yourpath/smartstrm/config:/app/config \\  # 挂载配置目录\n  -v /yourpath/smartstrm/logs:/app/logs \\  # 挂载日志目录，可选\n  -v /yourpath/smartstrm/strm:/strm \\  # 挂载 STRM 生成目录\n  # 以上 /yourpath 改为你实际存放配置的路径\n  -e PORT=8024 \\  # 管理端口，可选\n  -e ADMIN_USERNAME=admin \\  # 管理用户名\n  -e ADMIN_PASSWORD=admin123 \\  # 管理用户密码\n  cp0204/smartstrm:latest\n```\n\ndocker-compose.yml\n\n```yaml\nname: smartstrm\nservices:\n  smartstrm:\n    image: cp0204/smartstrm:latest\n    container_name: smartstrm\n    restart: unless-stopped\n    network_mode: host\n    volumes:\n      - /yourpath/smartstrm/config:/app/config # 挂载配置目录\n      - /yourpath/smartstrm/logs:/app/logs # 挂载日志目录，可选\n      - /yourpath/smartstrm/strm:/strm # 挂载 STRM 生成目录\n      # 以上 /yourpath 改为你实际存放配置的路径\n    environment:\n      - PORT=8024 # 管理端口，可选\n      - ADMIN_USERNAME=admin # 管理用户名\n      - ADMIN_PASSWORD=admin123 # 管理用户密码\n```\n\n一键更新\n\n```bash\ndocker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -cR smartstrm\n```\n\n### 环境变量\n\n| 变量名              | 默认值     | 描述             |\n| ------------------- | ---------- | ---------------- |\n| `PORT`              | `8024`     | 管理端口         |\n| `ADMIN_USERNAME`    | `admin`    | 管理用户名       |\n| `ADMIN_PASSWORD`    | `admin123` | 管理用户密码     |\n| `MAINLOG_MAX_DAYS`  | `7`        | 容器日志保存天数 |\n| `TASKLOG_MAX_LINES` | `1000`     | 任务日志保存行数 |\n| `ENABLE_IPV6`       | `true`     | 启用 IPv6 支持   |\n\n## 版本区别\n\n| 功能                      | 基础版 | Pro版 |\n| ------------------------- | ------ | ----- |\n| STRM 生成                 | ✅      | ✅     |\n| 支持多种存储驱动          | ✅      | ✅     |\n| Emby 删除同步             | ✅      | ✅     |\n| 网页、QAS、CS转存触发任务 | ✅      | ✅     |\n| 全局插件                  | ✅      | ✅     |\n| 任务级插件                | ⏰      | ✅     |\n| 飞牛影视刷新 插件         | 🔢      | ✅     |\n| 302代理-直链播放          | ❌      | ✅     |\n| CD2 WebHook               | ❌      | ✅     |\n| 本地存储实时监听          | ❌      | ✅     |\n\n\u003e ✅支持  ❌不支持  ⏰限时免费  🔢 试用限制\n\n## 使用\n\n**原理：** [STRM 文件](https://emby.media/support/articles/Strm-Files.html) 是一个网络资源的快捷方式，它使得无须在本地存储媒体文件，让 Emby 播放时再直接从网络上请求媒体资源，因扫描媒体库只识别文件名，而不用读取媒体文件内容，所以入库极快。支持 STRM 文件的有 Emby, Jellyfin, Kodi 等。\n\n### SmartStrm 的使用步骤\n\n1. 添加存储\n2. 添加任务，生成 STRM 文件\n3. 挂载 STRM 目录给媒体库容器的 /strm 路径\n4. 扫描媒体库，识别 STRM 文件\n\n完成以上步骤，Emby 已经能够直接从网盘直接提供播放，此时所有视频流量经过 Emby ，如果你在局域网外访问，可能受限于家中网络的上传带宽（特别是多人同时播放时）。你可能还需要：\n\n5. 设置302代理服务器（Pro），改从 SmartStrm 提供的端口访问 Emby ，将直接从网盘获取视频流（需网盘支持），享受最顺畅的播放。\n\n### 第三方教程\n\n- [视频教程：10分钟搞定！飞牛OS部署 SmartStrm+Emby 最强联动](https://www.bilibili.com/video/BV14shdzaEY7/)\n- [视频教程：SmartStrm 302 原理，使用演示，在外秒播云盘资源](https://www.bilibili.com/video/BV1DKaGzUEP7/)\n- [图文教程：SmartStrm + Emby：夸克网盘 302 直链播放完全指南](https://club.fnnas.com/forum.php?mod=viewthread\u0026tid=36387)\n- [图文教程：SmartStrm 部署，配置 Emby 媒体库，CloudSaver+QAS 联动，一站式302](https://linux.do/t/topic/924963)\n- [图文教程：QAS+SmartStrm 部署、追更秒入库丝滑体验](https://zhuanlan.zhihu.com/p/1943376528730756600)\n- [图文教程：SmartStrm +Emby +OpenList +Emby 联动删除直链播放，零成本NAS播放完全指南](https://post.smzdm.com/p/amon9plz/)\n- [玩法教程：SmartStrm + Openlist + 绿联影视中心 避免网盘风控](https://club.ugnas.com/forum.php?mod=viewthread\u0026tid=2037)\n- [图文教程：飞牛影视配置STRM指南](https://www.wifilu.com/4683.html)\n\n\u003e [!TIP]\n\u003e\n\u003e 🥰 **感谢教程作者：** 噜啦噜啦萝卜、Jochen、SunnyD、太阳营业了、寒梅别有、韵茂茂阿、WIFI之路 作出的贡献！🥰\n\u003e *（排名不分先后）*\n\n## 进阶使用\n\n### 转存自动生成STRM\n\n支持和 `quark-auto-save` `CloudSaver` 联动，在转存后触发任务。支持**仅触发转存的目标文件夹，秒级生成**。\n\n#### quark-auto-save 插件\n\n- **webhook**: SmartStrm Webhook 地址，从 `系统设置 - Webhook` 中获取\n- **strmtask**: 相关的 SmartStrm 任务名，支持多个如 `tv,movie`\n- **xlist_path_fix**: 可选，路径映射，SmartStrm 任务使用 夸克网盘 驱动时无须填写；使用 OpenList 驱动时需填写如 `/storage_mount_path:/quark_root_dir` 的格式 ，例如把夸克根目录(/)挂载在 OpenList 的 /quark 下，则填写 `/quark:/`。**SmartStrm 会使 OpenList 强制刷新目录，无需再用 alist 插件刷新。**\n\n#### CloudSaver 扩展\n\n支持夸克、天翼、115、123网盘，基本和 QAS 参数的逻辑相同，但需增加 `event` `savepath` 和调整 `xlist_path_fix` 参数。\n\n- **webhook**: SmartStrm Webhook 地址，从 `系统设置 - Webhook` 中获取\n- **strmtask**: 相关的 SmartStrm 任务名，支持多个如 `tv,movie`\n- **event**: `cs_strm`\n- **savepath**: `/{savePath}`\n- **xlist_path_fix**: 可选，任务使用夸克网盘、115 开放平台、123云盘开放平台、天翼云盘驱动时无须填写；使用 OpenList 驱动时需填写，夸克、115、123网盘同QAS，天翼云盘 `/你挂载在oplist的路径:/全部文件` ，只改动 : 前面部分，后面 /全部文件 保持不变。\n- **delay**: `0` 可选，延迟执行的秒数\n\n\u003cdetails\u003e\n\u003csummary\u003e天翼网盘配置示例图\u003c/summary\u003e\n\n![cs_189_set](https://github.com/Cp0204/SmartStrm/raw/refs/heads/main/img/cs_189_set.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e夸克网盘配置示例图\u003c/summary\u003e\n\n![cs_quark_set](https://github.com/Cp0204/SmartStrm/raw/refs/heads/main/img/cs_quark_set.png)\n\n\u003c/details\u003e\n\n### Emby 删除同步\n\n\u003e **前提: SmartStrm 的 STRM 目录需挂载到 Emby 容器的 `/strm` 路径**\n\u003e\n\u003e 例如 SmartStrm 容器目录映射为 `/yourpath/strm:/strm` ，Emby 容器同样映射为 `/yourpath/strm:/strm`\n\u003e\n\u003e 如果你无法改变 Emby 的 STRM 目录（例如群晖套件版）的解决办法：\n\u003e\n\u003e 手动修改 SmartStrm 的配置文件 config.yaml ，找到 `strm_in_emby:` ，修改为 SmartStrm 的 STRM 目录在 Emby 中录路径，重启 SS 就能按新的识别。\n\n在 `SmartStrm - Webhook - Emby 删除同步设置` 中启用功能，默认关闭。\n\n在 `Emby - 后台管理 - 通知` 中设置：\n\n- **网址**： SmartStrm Webhook 地址\n- **请求内容类型**: application/json\n- **Events**: 勾选 `媒体库-媒体删除`\n\n### Webhook 运行任务\n\n除了常用的 QAS、CloudSaver 触发外，SmartStrm 还支持通过自定义 Webhook 运行任务，供开发者调用。\n\n```bash\ncurl --request POST \\\n  --url http://127.0.0.1:8024/webhook/9dfb51234d483e83 \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"event\": \"a_task\",\n    \"delay\": 0,\n    \"task\": {\n        \"name\": \"test\",\n        \"storage_path\": \"/drive/quark/test\"\n    },\n    \"strm\": {\n        \"media_ext\": [\n            \"mp4\",\n            \"mkv\"\n        ],\n        \"url_encode\": true,\n        \"media_size\": 100,\n        \"copy_ext\": [\n            \"srt\",\n            \"ass\"\n        ]\n    }\n}'\n```\n\n其中：\n\n- `event` 是事件名，固定不变\n- `delay` 可选，延迟执行的秒数\n- `task.name` 必须为已存在的任务名，仅支持单个\n- `task.storage_path` 可选，填写时必须为任务的路径或子路径\n- `strm` 字典可选，如缺省则使用系统设置\n\n### 网页转存自动触发任务\n\n在网页转存资源成功时，向 SmartStrm 推送当前的网盘类型和保存路径，自动匹配并触发任务。\n\n使用指引：\n\n1. [安装 油猴/暴力猴/篡改猴 浏览器扩展](https://greasyfork.org/zh-CN/help/installing-user-scripts)\n2. 安装脚本：[SmartStrm助手 - 转存触发任务](https://greasyfork.org/zh-CN/scripts/549634)\n3. 打开任意分享页面，按提示填入 SmartStrm Webhook 地址\n4. 如后续需要修改 Webhook 地址，可从油猴扩展菜单中呼出\n\n### CloudDrive2 文件变更通知触发任务\n\n在 `SmartStrm - Webhook - CloudDrive2 文件变更触发设置` 中启用功能，默认关闭。\n\n并设置 **存储映射** ，有两种联动方式：\n\n1. 两边各添加同一网盘的同一账号（推荐）：目前支持 115、天翼云盘，填写格式为 `A=A1,B=B1,C=C1` 表示把 CD2 的 A 存储映射到 SS 的 A1 存储。\n\n2. 利用 CD2 的 WebDAV 功能，把 CD2 添加为 WebDAV 存储，该方式所有文件请求流量经过CD2。\n   1. 如添加 CD2 名为 `115open` 的存储到 SS 的 `115openA` ，WebDAV 地址 `http://yoururl:19798/dav/115open` ，映射填写格式同上如 `115open=115openA`。\n   2. 也可以加整个 CD2 根目录，假如在 SS 名为 `CD2_DAV` 存储，填写格式为 `/=CD2_DAV`；但有以上指定存储映射时优先用指定的映射。\n\n\u003e [!TIP]\n\u003e\n\u003e **使用实例：** 使用115网盘，在CD2的名称是 `115` ，在 SS 的名称是 `open115_Cp0204`\n\u003e\n\u003e 在 SS 中填写存储映射 `115=open115_Cp0204` ，同时创建路径为 `/影视库/电影`、`/影视库/剧集` 的任务\n\u003e\n\u003e 当 CD2 中检测到 `/115/影视库/电影/xxx` 变更时，SS 会根据变更的文件路径，自动找到要触发的任务。\n\n\u003cdetails\u003e\n\u003csummary\u003eCloudDrive2 Webhook 配置\u003c/summary\u003e\n\n```ini\n[global_params]\n# 此处 base_url修改为你的 SmartStrm Webhook 地址，其他保持不变\nbase_url = \"http://192.168.8.8:8024/webhook/9df1236ad884a83\"\nenabled = true\n\n[global_params.default_headers]\ncontent-type = \"application/json\"\nuser-agent = \"clouddrive2/{version}\"\n\n[file_system_watcher]\nurl = \"{base_url}/file_notify?device_name={device_name}\u0026user_name={user_name}\"\nmethod = \"POST\"\nenabled = true\nbody = '''\n{\n    \"device_name\": \"{device_name}\",\n    \"user_name\": \"{user_name}\",\n    \"version\": \"{version}\",\n    \"event_category\": \"{event_category}\",\n    \"event_name\": \"{event_name}\",\n    \"event_time\": \"{event_time}\",\n    \"send_time\": \"{send_time}\",\n    \"data\": [\n        {\n            \"action\": \"{action}\",\n            \"is_dir\": \"{is_dir}\",\n            \"source_file\": \"{source_file}\",\n            \"destination_file\": \"{destination_file}\"\n        }\n    ]\n}\n'''\n```\n\n\u003c/details\u003e\n\n## 302 代理\n\n\u003e 使用 SmartStrm 内置的 302 代理功能，将 Emby 客户端播放请求重定向，直接从直链获取视频流，不受 Emby 服务器的带宽限制。\n\u003e\n\u003e 测试支持绝大多数提供 http 直链的网盘，如使用 115VIP、天翼云盘、OpenList-支持302的盘 等方案较为完美。\n\u003e\n\u003e 图标示意: ✅兼容 ❌不兼容 🟡部分兼容 ⚫未测试\n\n### 按驱动分\n\n| 驱动        | Emby | Jellyfin | Plex | 备注                                                  |\n| ----------- | ---- | -------- | ---- | ----------------------------------------------------- |\n| OpenList    | ✅    | ✅        | ⚫    | 如果 oplist 开启302，直链兼容性依赖于网盘能否提供直链 |\n| 夸克网盘    | 🟡    | 🟡        | ✅    | 默认使用转码直链，部分视频不兼容，可用智能回落到代理  |\n| 115开放平台 | ✅    | ✅        | ⚫    | 直链完美兼容；但普通用户API限速，频繁报错             |\n| 天翼云盘    | ✅    | ✅        | ✅    | 直链完美兼容，速度完美                                |\n| 123开放平台 | ✅    | ✅        | ✅    | 直链完美兼容，速度完美                                |\n\n### 按客户端分\n\n| 客户端     | Emby | Jellyfin | Plex | 备注                             |\n| ---------- | ---- | -------- | ---- | -------------------------------- |\n| Web        | 🟡    | 🟡        | 🟡    | 不兼容夸克部分转码资源，其他正常 |\n| Android    | ✅    | ⚫        | 🟡    |                                  |\n| Android TV | 🟡    | -        | ⚫    | 不兼容夸克部分转码资源，其他正常 |\n| VidHub     | ✅    | ✅        | ✅    |                                  |\n| Yamby      | 🟡    | -        | -    | 不兼容夸克部分转码资源，其他正常 |\n| AfuseKt    | ✅    | ✅        |      |                                  |\n| 网易爆米花 | ✅    | ✅        |      |                                  |\n\n由于第三方播放器众多，未能一一测试。如果你重度依赖 302 功能，订阅长期 Pro 前请订阅 1 天试用，以测试其兼容性。\n\n### Plex 302 说明\n\nPlex 是账号服务+自部署服务，和 Emby/Jellyfin 独立的自部署有区别，你需要提前知道的：\n\n1. 第三方客户端 VidHub、Infuse 连接 Plex 本身就支持 STRM 播放，无须另外的 302 代理。\n2. 本项目对自部署的 Web 服务代理后，可以实现 Web 端 302 播放；将代理后的地址加 HTTPS 设置为 `设置 - 网络 - 自定义服务器访问 URL` 后，支持 Plex 客户端 302 播放。\n3. 在 app.plex.tv 中无法实现 STRM 播放，因为即使修改了后端返回，无法修改官方前端的代码。\n4. 受限于客户端解码能力，部分非流媒体的视频格式不能播放，这是无法解决的。\n\nPlex 自身有穿透机制，需要调整远程设置才能将代理端口提供于各客户端访问。具体设置方法请参考同类项目帮助：\n\n- [plex-服务端控制台设置](https://github.com/bpking1/embyExternalUrl/blob/main/plex2Alist/README.zh-Hans.md#5-plex-服务端控制台设置)\n- [plex2alist魔改版本](https://github.com/diannaSIN/plex2alist-)\n\n## 关联项目\n\n- [Quark-Auto-Save](https://github.com/Cp0204/quark-auto-save)\n\n  夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙。\n\n- [CloudSaver](https://github.com/jiangrui1994/cloudsaver)\n\n  一个基于 Vue 3 + Express 的网盘资源搜索与转存工具。\n\n- [Emby](https://emby.media/download.html)\n\n  一款强大的家庭媒体库管理和串流软件，可以帮助您整理和播放存储在服务器上的电影、音乐、照片等媒体内容。\n\n- [Jellyfin](https://jellyfin.org/downloads/docker)\n\n  一个开源的媒体库管理软件，支持多种媒体格式，可以跨平台使用。\n\n## Q\u0026A\n\n#### Q: 是否支持网盘资源转存、自动转存？\n\u003e A: 暂无计划，做好一件事，少即是多。网络上已经有不少转存工具，不重复造轮子，除非我有信心做成最好用的轮子。\n\n#### Q: 免费和收费？\n\u003e A: 基础功能免费（STRM生成，Webhook等），已经能够满足绝大多数人需求，高级功能付费（302代理），定价极其合理。作者的免费开源项目 QAS 至今已迭代多个版本， SmartStrm 是打通网络存储和私有媒体库的最后一块拼图，从高级功能中获取一定的回报，更有利于项目的长远发展。\n\u003e\n\u003e 功能定位：\n\u003e - 免费功能：基础的功能、细节优化、大众的需求。\n\u003e - 高级功能：进阶的功能、小众的需求。尤其是一个功能我自己用不上，是为了满足用户们需求而开发，那将会是Pro功能。\n\n#### Q: 未配置许可信息可以使用吗？\n\u003e A: 可以正常使用，没配置许可证不影响基础功能的使用，基础功能不逊色于同类项目。\n\u003e\n\u003e 如果你的容器不能启动、或管理后台打不开，则可能是端口没配置等其它问题导致。\n\n#### Q: 如何订阅和激活 Pro？\n\u003e 目前依托爱发电平台自助订阅：\n\u003e 1. [订阅入口](https://licenserver.0x69.win/store/smartstrm)；\n\u003e 2. 在 SmartStrm 后台的左下角，点 “免费版” 可以跳转，已经是 Pro 的，点击时间可以跳转到续订，容器重启后生效。\n\u003e\n\u003e 订阅成功后，密钥邮件自动发送，将密钥在 `系统设置-关于` 中验证即可，谢谢支持！\n\u003e\n\u003e 如果没有收到邮件，先检查有没有被拦截，确认没有收到可在爱发电给作者留言。\n\n#### Q: 302代理之后可以分享给家人和朋友用吗 这样会风控吗？\n\u003e A: 302代理后直接由客户端直接向网盘请求资源，表现为你的网盘账号在异地下载。假设你家里登录了、公司在异地也登录了，少量属于正常的使用需求。但如果公开出去同时十几、几十处异地下载，账号将有可能被风控，请自行承担风险。\n\n#### Q: 映射了 302 代理端口访问 Emby ，还要不要映射 SmartStrm 端口？\n\u003e A: 不需要，如果用 SS 的 302 代理功能，分享代理后的 Emby 端口出去，STRM 地址可以直接用内网，代理会自行处理。别人访问不到 SmsrtStrm 或 STRM 的地址，能访问的只有代理后的 Emby 服务，所以我称之为 “一站式 Emby Jellyfin 302 直链播放” 。\n\n#### Q: 能否支持 Jellyfin 的删除 Webhook 通知？\n\u003e A: Jellyfin 的通知中缺少一些关键信息，导致 SS 无法得知要删除的路径，所以没办法支持。\n\n#### Q: 夸克播放部分视频偏色？\n\u003e A: 这是个已知问题。目前的结论是偏色是夸克转码和播放客户端的问题，把杜比视界视频当流媒体处理时，播放器不支持杜比视界造成的。（当302时，直接由客户端解码杜比视界原文件，理论上只要是302和客户播放器不支持杜比视界都会偏色，和用哪个网盘无关）如果到夸克客户端、夸克TV播这个资源验证一下，也会是一样的偏色。目前已知同一个资源，调用 PotPlayer 播放不会偏色，如果客户端不支持只能换资源。\n\n#### Q: Emby 提示没有兼容的流如何排查？\n\u003e 1. 找到对应的 .strm 文件，用文本编辑器打开，里面有个 URL ，复制到浏览器看能否访问。\n\u003e 2. 检查 Emby 容器和以上 URL 的连接，如果是局域网，是否在同一个网段。\n\u003e 3. 检查 URL 中的媒体格式，部分媒体格式可能无法被网页端解码，尝试用客户端播放。\n\n#### Q: 新存入文件不生成？\n\u003e 尝试关闭任务设置的 `目录时间检查` 选项，这个选项本意是为了减少历遍请求，快速生成。但在某些盘中增修 /aa/bb/cc/ 下的文件，只有目录cc的修改时间会更新，aa和bb的修改时间不变，所以不会往下索引。\n\n#### Q: 关于目录时间检查选项的工作机制？\n\u003e A: 这个选项是为了最小化地请求接口，和最快的速度执行任务。远端目录的修改时间更新了、比本地新，就会往下检查。已知115新增/删除文件都会更新父目录的修改时间；夸克网盘新增会更新但删除不会；各个盘可能机制不一，建议自行验证。\n\n#### Q: 如何为 PikPak WebDAV 设置代理？\n\u003e 为容器添加环境变量如：\n\u003e ```bash\n\u003e HTTP_PROXY=http://172.17.0.1:10808\n\u003e HTTPS_PROXY=http://172.17.0.1:10808\n\u003e ```\n\u003e 把 172.17.0.1:10808 替换为你的 http 代理，并且应为黑白名单，而非全局代理。\n\n#### Q: 关于起播速度？\n\u003e A: 有三方面的因素：\n\u003e\n\u003e 1. 和本地媒体不同，STRM 相当于一个快捷方式。入库时 Emby 不会预读媒体文件规格（4K, HDR, 编码, 大小等），在首次播放时，才从网络请求文件读取文件规格。\n\u003e 2. 播放 STRM 时，SmartStrm 需要从网盘请求直链再做 302 跳转，内部会有若干个网络请求的时间；在 v0.3.0+ 生成 STRM 使用 `文件编号模式` 可减少至一个网络请求，稍微提高起播速度。\n\u003e 3. 获取到直链后，客户端需要对视频文件缓冲；这个时间和你的网络、服务器有关，部分网盘还可能会有限速。\n\u003e\n\u003e 入库快，免下载、在线播放，但起播速度会变慢。这是 STRM 的优点，也是不可避免有弊端。使用下来通常在10秒内起播，个人认为可以接受，无须盲目追求起播速度。\n\n## 开放源代码许可\n\nSmartStrm 是一个闭源项目，但站在巨人的肩膀上使用了多个开源库。我们尊重并遵守所有第三方开放源代码的许可要求。\n\n本项目使用的开放源代码及其许可证信息：[《开放源代码许可》](https://github.com/Cp0204/SmartStrm/raw/refs/heads/main/OPEN-SOURCE-SOFTWARE-NOTICE.md)\n\n## 最后\n\n感谢你看到这里，感谢你了解这个项目。\n\n这个项目最开始源自于 夸克自动转存(QAS) 的一次 [PR 讨论](https://github.com/Cp0204/quark-auto-save/pull/65#issuecomment-2779488163)，以及用过同类 STRM 后，自己用着处处不顺手（需求精准生成、速度快、方便调用）。\n\n所以立项之初就决定了要和 QAS 能联动，后来也和 CloudSaver 作者一拍即合，基本做到这俩工具转存后就能生成 STRM、Emby 入库一条龙，这里有一个[演示视频](https://www.bilibili.com/video/BV1wtaAzCEBv/)。\n\n用 STRM 的方式播 115、天翼、夸克的资源，和 QAS、CS 联动转存即触发生成，个人认为一点已经可以优于同类工具了。\n\n不仅于此，SmartStrm 未直接支持的网盘，同样可以用 OpenList 来转接。\n\n作为一个工具类软件，我希望它足够精巧优雅，就像一块积木，和其他积木一起拼在一起，在你的 NAS 中组合成你自己的观影自动化方案。\n\n希望你能喜欢。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcp0204%2Fsmartstrm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcp0204%2Fsmartstrm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcp0204%2Fsmartstrm/lists"}