开源媒体浏览器Kyoo

2023-09-20 09:36:41

在这里插入图片描述

什么是 Kyoo ?

Kyoo 是一款开源媒体浏览器,可让您流式传输电影、电视节目或动漫。它是 PlexEmbyJellyfin 的替代品。Kyoo 是从头开始创建的,它不是一个分叉。一切都将永远是免费和开源的。

软件特性:

  • 管理您的电影、电视剧和动漫
  • 自动下载元数据
  • Transmux/Transcode 文件以使它们在每个平台上可用
  • 具有权限系统的账户系统
  • 使用嵌入字体(asssubripvtt)本地处理字幕
  • 完全免费,无需互联网即可工作(当元数据已下载时)

老苏试用的感受,Kyoo 目前还是比较初级,要想取代 PlexEmbyJellyfin,还有蛮远的路需要走,一方面是文档比较匮乏,另一方面感觉功能还是比较少

官方提供了观看无版权电影的现场演示:https://kyoo.zoriya.dev/

准备工作

API key

这一步是必须的;

为了检索元数据,Kyoo 将需要与外部服务进行通信。目前来说,就是the movie database。为此,您需要获取 API 密钥。

为此,需要访问 themoviedb.orghttps://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:应该是转码服务;
  • nginxWeb 服务;
  • postgres:15:数据库服务;

docker-compose.yml

将下面的内容保存为 docker-compose.yml 文件,该文件描述了 Kyoo 的不同服务、它们应该在哪里下载以及它们的启动顺序。

version: "3.8"

services:
  back:
    image: zoriya/kyoo_back:master
    container_name: kyoo_back
    restart: on-failure
    env_file:
      - ./env.txt
    depends_on:
      postgres:
        condition: service_healthy
    volumes:
      - ./kyoo:/kyoo

  front:
    image: zoriya/kyoo_front:master
    container_name: kyoo_front
    restart: on-failure
    environment:
      - KYOO_URL=${KYOO_URL:-http://back:5000}
      - PUBLIC_BACK_URL=${PUBLIC_BACK_URL}

  scanner:
    image: zoriya/kyoo_scanner:master
    container_name: kyoo_scanner
    restart: on-failure
    depends_on:
      back:
        condition: service_healthy
    env_file:
      - ./env.txt
    environment:
      - KYOO_URL=${KYOO_URL:-http://back:5000}
    volumes:
      - ${LIBRARY_ROOT}:/video

  transcoder:
    image: zoriya/kyoo_transcoder:master
    container_name: kyoo_transcoder
    restart: on-failure
    env_file:
      - ./env.txt
    volumes:
      - ${LIBRARY_ROOT}:/video
      - ${CACHE_ROOT}:/cache
      - ./metadata:/metadata

  ingress:
    image: nginx
    container_name: kyoo_nginx
    restart: on-failure
    environment:
      - PORT=8901
      - FRONT_URL=http://front:8901
      - BACK_URL=${KYOO_URL:-http://back:5000}
    volumes:
      - ./nginx.conf:/etc/nginx/templates/kyoo.conf.template:ro
    depends_on:
      - back
      - front
    ports:
      - "8901:8901"

  postgres:
    image: postgres:15
    container_name: kyoo_postgres
    restart: on-failure
    env_file:
      - ./env.txt
    volumes:
      - ./data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5

这个文件中,唯一可能需要修改的就是本地端口 8901,如果不冲突的话建议就不要改了;

nginx.conf

将下面的内容保存为 nginx.conf,该文件描述了访问 KyooURL 时将调用哪个服务。

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#J3

DEFAULT_PERMISSIONS=overall.read
UNLOGGED_PERMISSIONS=overall.read

THEMOVIEDB_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/

更多推荐

[echarts] 两侧堆叠柱状图

http://echarts.zhangmuchen.top/#/detail?cid=xOQSXIOQiKconstmyData=['福田区','罗湖区','南山区','盐田区','宝安区','龙岗区','坪山区','龙华区','光明区','大鹏区'];//全彩屏,双基色屏,简易屏,条形屏constoffLine=[

大型游戏动作竞技游戏开发和体感VR/AR游戏开发:创造引人入胜的虚拟世界

大型游戏动作竞技游戏和体感VR/AR游戏都代表了游戏开发领域的最新趋势。它们提供了高度沉浸式的娱乐体验,结合了视觉、听觉和体感互动。在本文中,我们将探讨如何开发这两种类型的游戏,并介绍其关键特点和开发流程。大型游戏动作竞技游戏的特点高品质图形:这些游戏通常具有引人入胜的3D图形,精美的场景和角色模型。多人在线模式:大多

运维:Powershell面向对象编程简介

运维/powershellPowershell面向对象编程简介作者:李俊才(jcLee95):https://blog.csdn.net/qq_28550263邮箱:291148484@163.com本文地址:https://blog.csdn.net/qq_28550263/article/details/13287

Day46:项目-购物车案例

购物车案例准备工作首页默认加载,其余页面懒加载调用defineStore方法构建store入口main做对应配置,找指南,快速开始,把elementplus引入进来import{createApp}from"vue";import{createPinia}from"pinia";import"./style.css";

微信小程序——生命周期详解(代码解读)

✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。🍎个人主页:JavaFans的博客🍊个人信条:不迁怒,不贰过。小知识,大智慧。💞当前专栏:微信小程序学习分享✨特色专栏:国学周更-心性养成之路🥭本文内容:微信小程序——使用Vant组件实现Popup弹出层(各位置弹出详细代码分

卷积神经网络(一)

文章目录前言卷积层多通道池化层代码前言从外行者角度看卷积神经网络会说无非就是卷积层后面跟着一个池化层,但是深入代码实际编写卷积神经网络总是有些困难的。其中包括各种细节比如数据格式、尺寸变化、运算规定等。参考:{{Citejournal|last1=Zhang|first1=Aston|last2=Lipton|firs

tcp_v4_connect函数的解析

源码:inttcp_v4_connect(structsock*sk,structsockaddr*uaddr,intaddr_len){//解析输入的地址结构structsockaddr_in*usin=(structsockaddr_in*)uaddr;//获取TCP协议栈的全局death_row对象structi

STM32H5开发(5)----串口打印配置

STM32H5开发----4.开发板介绍概述样品申请硬件准备生成例程配置调试口代码生成配置项目配置调试配置串口重定向打印测试结果概述在使用STM32CUBEIDE开发STM32H5项目时,串口打印被证明是一项极其有益的调试工具,能够在开发过程中实时输出信息和调试数据,起到了至关重要的作用。通过充分利用串口打印功能,开发

Netty面试题(一)

文章目录前言一、BIO、NIO和AIO的区别?二、NIO的组成?三、Netty的特点?总结前言BIO、NIO和AIO的区别?NIO的组成?Netty的特点?一、BIO、NIO和AIO的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步IO:将请求连接放入线程池,一对

从零学算法(剑指 Offer 33)

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树:5/\26/\13示例1:输入:[1,6,3,2,5]输出:false示例2:输入:[1,3,2,6,5]输出:true我的思路:二叉搜索树就是左节点都

DS相关题目

DS相关题目题目一:消失的数字拿到这道题目之后,首先可以想到的一个解题方法就是,我们可以先排序,排完序之后,这个数组其实就是一个有序的数组了,那只用比较数组中的每一个元素和他对应的下标是不是相等的,如果是相等的,那么就说明对应的数字其实是存在的,如果是不相等的,那么就说明对应的数字其实就是不存在的了,但是如果要排序的话

热文推荐