开源媒体浏览器Kyoo
什么是 Kyoo ?
Kyoo
是一款开源媒体浏览器,可让您流式传输电影、电视节目或动漫。它是Plex
、Emby
或Jellyfin
的替代品。Kyoo
是从头开始创建的,它不是一个分叉。一切都将永远是免费和开源的。
软件特性:
- 管理您的电影、电视剧和动漫
- 自动下载元数据
Transmux/Transcode
文件以使它们在每个平台上可用- 具有权限系统的账户系统
- 使用嵌入字体(
ass
、subrip
或vtt
)本地处理字幕 - 完全免费,无需互联网即可工作(当元数据已下载时)
老苏试用的感受,Kyoo
目前还是比较初级,要想取代 Plex
、Emby
或 Jellyfin
,还有蛮远的路需要走,一方面是文档比较匮乏,另一方面感觉功能还是比较少
官方提供了观看无版权电影的现场演示:https://kyoo.zoriya.dev/
准备工作
API key
这一步是必须的;
为了检索元数据,Kyoo
将需要与外部服务进行通信。目前来说,就是the movie database
。为此,您需要获取 API
密钥。
为此,需要访问 themoviedb.org
:https://www.themoviedb.org/并创建一个帐户,然后转到 https://www.themoviedb.org/settings/api ,复制 API
密钥,并将其粘贴到 env.txt
文件的 THEMOVIEDB_APIKEY=
后面。
电影
这一步不是必须的,只是老苏最近硬盘里正好找不到电影,所以只能临时下一部用来测试;
下载了一部官网上看到的 Tears of Steel
这部片子可以在 https://mango.blender.org/download/ 下载,不仅有不同的分辨率,还提供了不同语言的字幕
当然你也可以下载老苏在阿里云盘上分享的文件,https://www.aliyundrive.com/s/21uG7scZoj2,不过老苏只下了 1080P
的版本
安装
在群晖上以 Docker 方式安装。
Kyoo
用到 4
个自己官方的镜像,但 tags
最新版本不是常用的 latest
,而是 master
还是那句话,如果镜像拉不动,去docker
代理网站试试 :https://dockerproxy.com/
其中:
zoriya/kyoo_back:master
:后端服务;zoriya/kyoo_front:master
:前端页面;zoriya/kyoo_scanner:master
:应该是扫描服务,估计是检测文件变化的;zoriya/kyoo_transcoder:master
:应该是转码服务;nginx
:Web
服务;postgres:15
:数据库服务;
docker-compose.yml
将下面的内容保存为 docker-compose.yml
文件,该文件描述了 Kyoo
的不同服务、它们应该在哪里下载以及它们的启动顺序。
version: "3.8"services:back:image: zoriya/kyoo_back:mastercontainer_name: kyoo_backrestart: on-failureenv_file:- ./env.txtdepends_on:postgres:condition: service_healthyvolumes:- ./kyoo:/kyoofront:image: zoriya/kyoo_front:mastercontainer_name: kyoo_frontrestart: on-failureenvironment:- KYOO_URL=${KYOO_URL:-http://back:5000}- PUBLIC_BACK_URL=${PUBLIC_BACK_URL}scanner:image: zoriya/kyoo_scanner:mastercontainer_name: kyoo_scannerrestart: on-failuredepends_on:back:condition: service_healthyenv_file:- ./env.txtenvironment:- KYOO_URL=${KYOO_URL:-http://back:5000}volumes:- ${LIBRARY_ROOT}:/videotranscoder:image: zoriya/kyoo_transcoder:mastercontainer_name: kyoo_transcoderrestart: on-failureenv_file:- ./env.txtvolumes:- ${LIBRARY_ROOT}:/video- ${CACHE_ROOT}:/cache- ./metadata:/metadataingress:image: nginxcontainer_name: kyoo_nginxrestart: on-failureenvironment:- PORT=8901- FRONT_URL=http://front:8901- BACK_URL=${KYOO_URL:-http://back:5000}volumes:- ./nginx.conf:/etc/nginx/templates/kyoo.conf.template:rodepends_on:- back- frontports:- "8901:8901"postgres:image: postgres:15container_name: kyoo_postgresrestart: on-failureenv_file:- ./env.txtvolumes:- ./data:/var/lib/postgresql/datahealthcheck:test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]interval: 5stimeout: 5sretries: 5
这个文件中,唯一可能需要修改的就是本地端口
8901
,如果不冲突的话建议就不要改了;
nginx.conf
将下面的内容保存为 nginx.conf
,该文件描述了访问 Kyoo
的 URL
时将调用哪个服务。
server {listen ${PORT};root /usr/share/nginx/html;location / {proxy_pass ${FRONT_URL};proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}location /api/ {proxy_pass ${BACK_URL}/;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
}
这个文件中,最好什么都别改;
env.txt
将下面的内容保存为 env.txt
,该文件包含其中的服务 docker-compose.yml
将读取的所有配置选项。
# Useful config options
LIBRARY_ROOT=./video
CACHE_ROOT=./tmp/kyoo_cache
LIBRARY_LANGUAGES=en# A pattern (regex) to ignore video files.
LIBRARY_IGNORE_PATTERN=.*/[dD]ownloads?/.*# The following two values should be set to a random sequence of characters.
# You MUST change thoses when installing kyoo (for security)
AUTHENTICATION_SECRET=4c@mraGB!KRfF@kpS8739y9FcHemKxBsqqxLbdR?
# You can input multiple api keys separated by a ,
KYOO_APIKEYS=t7H5!@4iMNsAaSJQ49pat4jprJgTcF656if#J3DEFAULT_PERMISSIONS=overall.read
UNLOGGED_PERMISSIONS=overall.readTHEMOVIEDB_APIKEY=
PUBLIC_BACK_URL=http://localhost:5000# Following options are optional and only useful for debugging.# To debug the front end, you can set the following to an external backend
KYOO_URL=
# The library root inside the container.
KYOO_LIBRARY_ROOT=/video# Database things
POSTGRES_USER=KyooUser
POSTGRES_PASSWORD=KyooPassword
POSTGRES_DB=kyooDB
POSTGRES_SERVER=postgres
POSTGRES_PORT=5432# vi: ft=sh
这个文件中,
THEMOVIEDB_APIKEY=
必须把前面在themoviedb.org
网站获取到的API
秘钥外,其他的不建议改,除非你清楚每个字段的含义;
老苏没有找到官方的关于环境变量的说明,所以也不清楚LIBRARY_LANGUAGES
是不是支持中文
然后执行下面的命令
# 新建文件夹 kyoo 和 子目录
mkdir -p /volume1/docker/kyoo/{data,kyoo,metadata,video,tmp/kyoo_cache}# 进入 kyoo 目录
cd /volume1/docker/kyoo# 将 docker-compose.yml 、 env.txt 、 nginx.conf 放入当前目录# 一键启动
docker-compose --env-file env.txt up -d
运行
在浏览器中输入 http://群晖IP:8901
就能看到主界面
如果你还没有在 video
目录中放入电影,你会看到一个空空的主界面
如果你已经拷入了 Tears of Steel
,则会显示电影的封面
进入详情页面
可以直接播放
支持选择不同的分辨率
右上角可以注册用户
但是登录之后,并没有什么功能,连基本的权限都还不具备
这也就是开始老苏说的还比较初级的原因,但是从长远看,还是值得期待的,毕竟又多了一个选择
参考文档
zoriya/Kyoo: A portable and vast media library solution.
地址:https://github.com/zoriya/kyoo
Kyoo
地址:https://kyoo.zoriya.dev/browse
ReDoc
地址:https://kyoo.zoriya.dev/api/doc/index.html?url=/api/swagger/v1/swagger.json
Download | Tears of Steel
地址:https://mango.blender.org/download/
相关文章:

开源媒体浏览器Kyoo
什么是 Kyoo ? Kyoo 是一款开源媒体浏览器,可让您流式传输电影、电视节目或动漫。它是 Plex、Emby 或 Jellyfin 的替代品。Kyoo 是从头开始创建的,它不是一个分叉。一切都将永远是免费和开源的。 软件特性: 管理您的电影、电视剧…...
人脸解锁设备时出现相机报错
(1)背景分析 这是项目当中实际遇到的问题,如下代码仅用作分析和记录。 现在问题的现象是:刚亮屏大概在2s以内对着人脸一般是能解锁的,但是超过2s之后在对着人脸,是无法解锁成功的。 (2&#…...

【广州华锐互动】利用VR开展工业事故应急救援演练,确保救援行动的可靠性和有效性
在工业生产中,事故的突发性与不可预测性常常带来巨大的损失。传统的应急演练方式往往存在场地限制、成本高、效果难以衡量等问题。然而,随着虚拟现实(VR)技术的快速发展,VR工业事故应急救援演练应运而生,为…...

还不知道数据类岗位的相关技能和职责吗?涤生大数据告诉你(二)
续接上文:还不知道数据类岗位的相关技能和职责吗?涤生大数据告诉你(一) 1.数据治理工程师 工作职责 数据治理工程师的工作职责主要包括以下几个方面: 1. 数据管理策略制定:制定和实施数据管理策略&#…...

常见应用层协议
一.HTTP(超文本传输协议) HTTP 和 HTTPS 二.FTP(文件传输协议) 三.SMTP(简单邮件传输协议) 四.POP3(邮局协议版本3) 五.IMAP(互联网消息访问协议) 六.DNS&am…...
解决docker容器无法关闭的问题
一般正常关闭: docker stop 容器ID解决方法 方法1:强制停止docker kill 容器ID方法2:直接重启dockersudo service docker stop方法3:直接删除容器,重新创建docker rm -f my_container...

2023-09-27 LeetCode每日一题(餐厅过滤器)
2023-09-27每日一题 一、题目编号 1333. 餐厅过滤器二、题目链接 点击跳转到题目位置 三、题目描述 给你一个餐馆信息数组 restaurants,其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息…...

梯度下降法(SGD)原理
目录 梯度下降法(SGD)原理:求偏导 1. 梯度(在数学上的定义) 2. 梯度下降法迭代步骤 BGD批量梯度下降算法 BGD、SGD在工程选择上的tricks 梯度下降法(SGD)原理:求偏导 1. 梯度(在数学上的定义) 表示某一函数在该点处的方向导数沿着该方向取得最大值…...

QQ表情包存储位置解析
一些常见的设备和系统的QQ表情包存储位置: Windows系统: 路径:C:\Users[用户名]\Documents\Tencent Files[QQ号码]\Image\Image\CustomFace 在这个文件夹中,您可以找到所有自定义的QQ表情包。 Android系统: 路径&am…...

软件架构的演化和维护
软件架构的演化和维护 定义 定义 顶不住了,刷题去了,不搞这个了,想吐。。。...

C语言数组和指针笔试题(四)(一定要看)
目录 二维数组例题一例题二例题三例题四例题五例题六例题七例题八例题九例题十例题十一 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒个人主页 🥸🥸🥸C语言 🐿️…...

FragmentManager is already executing transactions
本文解决问题: java.lang.IllegalStateException: FragmentManager is already executing transactions 问题背景描述: 在Fragment中 用tablayoutviewpagerfragment,即Fragment嵌套Fragment场景、或者ViewPager2嵌套ViewPager2时。 执行生命…...

Matlab中clear,close all,clc功能详细说明
背景: 我们在写matlab程序时,首行总是先敲入:clear; close all; clc;,但你真的知道这三句话的具体作用嘛,下面进行详细说明和演示。 一、clear的功能 clear的功能:清理工作区变量,不清理前是…...

Typora安装无需破解免费使用
Typora简介: 在介绍Typora软件之前,需要先介绍一下MARKDOWN。 MARKDOWN是一种轻量型标记语言,它具有“极简主义”、高效、清晰、易读、易写、易更改纯文本的特点。 Typora 是一款支持实时预览的 Markdown 文本编辑器。它有 OS X、Windows、…...
LuatOS-SOC接口文档(air780E)--errDump - 错误上报
示例 -- 基本用法, 10分钟上报一次,如果有的话 if errDump thenerrDump.config(true, 600) end-- 附开源服务器端: https://gitee.com/openLuat/luatos-devlogerrDump.dump(zbuff, type, isDelete) 手动读取异常日志,主要用于用户将日志发送给自己的服务器而不是I…...

低代码平台如何助力国内企业数字化转型?
数字化是什么 数字化(Digitalization)是将许多复杂多变的信息转变为可以度量的数字、数据,再以这些数字、数据建立起适当的数字化模型,把它们转变为一系列二进制代码,引入计算机内部,进行统一处理…...

SI3262—高度集成的低功耗SOC芯片
Si3262是一款高度集成的低功耗SOC芯片,其集成了基于RISC-V核的低功耗MCU和工作在13.56MHz的非接触式读写器模块。 MCU模块具有低功耗、Low Pin Count、宽电压工作范围,集成了13/14/15/16位精度的ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、TSC等…...

除静电离子风机在无尘车间的应用
除静电离子风机在无尘车间中的应用非常广泛,主要是用来控制车间内的静电荷,防止静电对车间内的电子元器件、电路板等敏感部件产生损害。 具体来说,除静电离子风机通常采用电离器产生大量负离子,将车间内的静电荷中和成无害的水蒸气…...

Linux上的Pip和Python升级指南
在Linux系统上,保持Pip和Python版本的最新状态对于顺利进行Python开发至关重要。通过升级Pip和Python,你可以享受到最新的功能、修复的bug以及提升的开发效率。本文将为你提供在Linux上升级Pip和Python的详细指南,助你打造更强大的开发环境。…...

4G工业路由器高效数据传输助力光伏发电站管理
光伏发电站是能源产业中一种利用太阳能技术将光转化为电能的常见设施。随着物联网技术与环保能源的不断进步和应用的普及,光伏发电站的管理也变得更加便捷高效。 光伏发电站结合4G工业路由器实现远程监控管理,并用于采集发电站中的传感器数据和监控信息…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...