• 开源媒体浏览器Kyoo


    在这里插入图片描述

    什么是 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77

    这个文件中,唯一可能需要修改的就是本地端口 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";
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    这个文件中,最好什么都别改;

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    这个文件中,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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行

    在浏览器中输入 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/

  • 相关阅读:
    重学FreeRTOS操作系统之任务篇(一)
    出海 SaaS 企业增长修炼手册2:Kyligence 落地 PLG 是如何避坑的?
    计算机网络-网络,互联网
    NXP官方开发板uboot程序烧写到SD卡并启动
    Flutter ☞ 数据类型
    C语言:堆
    程序员『天梯排行榜』,看看你在哪一级?
    Opencv4.6.0+VS2019+win11安装教程
    在 Rainbond 上使用 Curve 云原生存储
    spring boot社区购物小程序毕业设-附源码291720
  • 原文地址:https://blog.csdn.net/wbsu2004/article/details/133065390