玩客云 线刷Armbian 搭配Alist 阿里云盘 Jellyfin NovaVideoPlayer搞电视墙
啰嗦的背景
喜欢看电影,买了个投影仪,是这一切折腾的开端。
投影仪虽然有当贝系统,但是想看的电影总是需要**电视会员,那我肯定是不用的。因为有爱腾优的会员,最开始都是使用手机投屏,当呗的投影仪好就好在投屏基本没有广告。然而遇到某些电影,要不就是会员也得加钱点映,要不就是根本没资源,当时的解决方案是电脑迅雷找资源,下好了之后拷贝到U盘,插到投影仪或者客厅电视播放。
这个过程听着就烦人。有没有更好的方案呢?
这时候有个快被淘汰的叫玩客云的便宜矿渣进入了视线。
大概了解之后去拼多多找货,结果发现都是些刷好系统的,原本的玩客云系统已经不能使用。其实我最开始就是想要个能够方便(快速)下载电影,并且不需要再用U盘挪来挪去的工具。所以最后在小黄鱼花高价买了个已绝育的原装玩客云。
到手后一番折腾,可惜并没有意淫中的美妙。玩客云的好处在于,它有一个比较成熟完整的网盘系统,可以在电脑或者手机客户端直接远程添加下载,可以勉强充当一个私有网盘使用,可以开启smb服务,投影仪支持直接打开smb文件夹中的视频。然而这一切都毁在下载上,说好的永久免费迅雷会员呢,结果大部分资源根本下不动,下的动的用玩客云下载还不如我电脑迅雷试用会员呢。系统也不太稳定的样子,手机客户端经常需要多次刷新才能显示链接上。
接着开始琢磨玩客云的玩法,从搜索结果来看,主流的做法都是刷个Armbian系统,然后装docker玩一些应用。于是开始琢磨刷机。
开始刷机
具体的刷机步骤不描述了,网上太多,只记录一下思路。搜索到的大多数教程,都是使用U盘,需要先刷一个安卓底包,再刷5.88版本的Armbian系统,再刷5.9版本。太麻烦了太麻烦了。继续找,在恩山论坛找到了线刷的办法(参考:玩客云-Armbian23.05-直刷包-内核6.1)。然后去github下载了最新版本的直刷包,京东3.5买了一条双头USB线,在一个夜深人静的周六下午,经历了暴力拆机和多次短接失败之后成功刷入了Armbian系统…
阿里云盘初体验
最开始刷完之后我是有点懵的,我刷机是要干嘛来着…
噢,对了,我要看电影。这时候我其实还想着下载这个事。但是在搜索电影资源的时候发现了阿里云盘这个玩意儿。我感觉打开了新世界的大门,原来不用下载就能看(大部分)想看的高清电影!还可以投屏!在这几天中,我沉迷于在阿里云盘上找资源,晚上直接使用手机阿里云盘投屏看视频…
我买个玩客云来干啥来着…
为了不荒废这个便宜的矿渣,经过一番学习(百度),了解到还可以把阿里云盘挂载到本地路径供局域网的电脑、投影仪、电视访问,也算是找到一点(几乎没有)用处。
具体步骤也不描述了,百度一大堆,仅介绍一下思路。我参考:玩客云安装armbian后将阿里网盘挂载为本地磁盘,并共享给摄像头当存储设备 这篇文章(以及大量其他文章),在armbian系统中安装了docker, 使用aliyundrive-webdav,davfs2,将我的阿里云盘挂载到本地路径了…
开始折腾Jellyfin和Alist
如果就挂到本地,像访问文件夹一样去访问播放,那我还不如手机投屏还方便呢…
这时候“学习”到有个东西叫Jellyfin, 可以扫描(挂载到)本地的文件夹,刮削海报和电影信息,自动生成海报墙,提供了安卓客户端,可以安装到投影仪和电视,遥控器在海报墙之间刷来刷去,想想都美滋滋啊(虽然没什么*用)。
最开始使用docker安装了jellyfin。在添加媒体库的时候,选择了阿里云aliyundrive-webdav挂载的目录,发现跑特别慢,观察玩客云负载, 发现aliyundrive-web服务基本上把cpu占满了,才几百个电影文件夹, 仿佛要跑到地老天荒(玩客云弱鸡 )。此外,aliyundrive-webdav有个缺点,使用了它之后我只能看到我备份盘的文件,但是看不到资源盘的文件,而我大多数电影资源都在资源盘,需要手动移动道备份盘。
这时候发现一个叫alist的开源项目,可以实现aliyundrive-webdav更多的功能,挂载更多的的网盘,也提供webdav服务。于是我选择把jellyfin的容器停掉,使用docker安装了一个最新版本:
docker run -d --restart=always -v /root/**/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest
访问http://*.*.*.*:5244,然后挂载阿里云盘,选择资源盘…还算是非常快速方便的连上了我的阿里云盘。
这次我使用了本地安装的办法安装Jellyfin(为了省资源提效率):
sudo apt install curl gnupg
curl -fsSL https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/jellyfin.gpg
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
sudo apt update
sudo apt install jellyfin
访问http://*.*.*.*:8096就可以继续折腾jellyfin了。这次我使用rclone来挂载alist webdav到本地,挂载完成后继续尝试添加媒体库,开始刮削。by the way , 实测,因为某些原因,需要修改系统hosts文件或者在路由器设置代理,才能正常的访问api,themoviedb.org 刮削到海报和电影信息。经过观察,这次cpu占用率要低很多,20%左右,也比较顺利的刷出了海报墙。
KODI 和 NovaVideoPlayer
我最开始装了个ios端的jellyfin客户端,发现播不动,因为玩客云性能太渣渣,解码太慢了,cpu都占满。然后查了下文档,在jellyfin后台设置优先使用fmp4-hls, 换了个infuse,使用客户端解码,终于可以播放了。
有人推荐使用KODI,但是根据我的亲身经历,这产品经理真…不好用,反人类,装个最新版的一到配置的时候还卡死, 折腾一晚上搞不出效果,放弃…
然后在投影仪和电视上都安装Jellyfin的安卓客户端,再装一个当贝播放器,用Jellyfin浏览电影信息,播放的时候选择使用当贝播放器,实现客户端硬件解码,基本上阿里云盘资源中的电影都能秒点开秒播放了。到此,基本上算是告一段落…?
在播放电影时,观察玩客云的负载,发现rclone 服务占用较高,推测是需要从阿里云盘下载数据挂载到本地再给客户端播放。此外,想着等公网ip申请下来,我在外使用(伪需求,绝对伪需求)时,流量还得经过家里的带宽和玩客云,太不美观了。于是看了下alist的官网,找到了NovaVideoPlayer这款播放器https://github.com/nova-video-player/aos-AVP, 它的最新版本已经支持webdav。直接在github release页面下载它们最新的apk安装包,安装到电视上,配置alist webdav地址,它会自动扫描文件夹,自动连接themoviedb刮削电影信息和海报,生成海报墙,自带影视分类,自带客户端解码播放,也可以选择使用第三方播放器,可以在线自动搜索下载字幕…总之一切都很美妙,等我装好了之后,发现刮削过程中玩客云负载并不高;我选择了一部近50G的高清电影播放,几乎秒开,整个播放过程玩客云保持“冷静”,流量直接从阿里云盘到客户端Nova解码播放…完美,感动得想哭。
总结
简单总结一下,对于我这样的电影党 + 乞丐流派,玩客云刷Armbian,装alist 挂载阿里云盘 ,使用NovaVideoPlayer观看电影,几乎是我尝试下来的最佳实践。当然,由于Jellyfin的界面相对于Nova,还是更美观一点(Nova更偏向之前WP的扁平化风格),因此Jellyfin我也一直留着,在局域网内看电影依然美滋滋。
至于下一步折腾什么?
申请了公网ip, 准备考虑弄个客户端,挂载个闲置的移动硬盘,弄个私人网盘玩玩,就当给我乞丐版的macbook扩容了。
相关文章:
玩客云 线刷Armbian 搭配Alist 阿里云盘 Jellyfin NovaVideoPlayer搞电视墙
啰嗦的背景 喜欢看电影,买了个投影仪,是这一切折腾的开端。 投影仪虽然有当贝系统,但是想看的电影总是需要**电视会员,那我肯定是不用的。因为有爱腾优的会员,最开始都是使用手机投屏,当呗的投影仪好就好…...
9月1日,每日信息差
1、华大智造:已实现海外基因测序仪和测序试剂的量产,实现了海外基因测序仪和测序试剂的量产 2、邮储银行下调定存利率。价格表显示,整存整取,一年期存款年利率为1.58%,二年期年利率为1.85%,三年期年利率为…...
【大数据】Flink 详解(六):源码篇 Ⅰ
Flink 详解(六):源码篇 Ⅰ 55、Flink 作业的提交流程?56、Flink 作业提交分为几种方式?57、Flink JobGraph 是在什么时候生成的?58、那在 JobGraph 提交集群之前都经历哪些过程?59、看你提到 Pi…...
ShardingSphere——弹性伸缩原理
摘要 支持自定义分片算法,减少数据伸缩及迁移时的业务影响,提供一站式的通用弹性伸缩解决方案,是 Apache ShardingSphere 弹性伸缩的主要设计目标。对于使用单数据库运行的系统来说,如何安全简单地将数据迁移至水平分片的数据库上…...
Linux项目自动化构建工具-make/Makefile
一、什么是make和makefile make是一条指令 Makefile是当前目录下的一个文件 二、makefile文件编写 依赖关系::前为要目标文件,后为其依赖的文件 依赖方法:用依赖文件生成目标文件的具体指令 简便写法: $:表示目标文件 $^:表示…...
Python爬虫实战:自动化数据采集与分析
在大数据时代,数据采集与分析已经成为了许多行业的核心竞争力。Python作为一门广泛应用的编程语言,拥有丰富的爬虫库,使得我们能够轻松实现自动化数据采集与分析。本文将通过一个简单的示例,带您了解如何使用Python进行爬虫实战。…...
视频智能分析平台EasyCVR安防视频汇聚平台助力森林公园防火安全的应用方案
一、研发背景 随着经济的发展和人们生活水平的提高,越来越多的人喜欢在周末去周边的森林公园旅游,享受大自然的美景,并进行野炊和烧烤等娱乐活动。然而,近年来由于烟蒂和烧烤碳渣等人为因素,森林公园火灾频繁发生。森…...
跨境做独立站,如何低成本引流?
大家都知道,海外的消费习惯与国内不同,独立站一向是海外消费者的最喜欢的购物方式之一,这也吸引了许多跨境商家开设独立站。 独立站不同于其他的第三方平台,其他平台可以靠平台自身流量来获得转化,而独立站本身没有流…...
leetcode55.跳跃游戏 【贪心】
题目: 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例…...
探秘C语言扫雷游戏实现技巧
本篇博客会讲解,如何使用C语言实现扫雷小游戏。 0.思路及准备工作 使用2个二维数组mine和show,分别来存储雷的位置信息和排查出来的雷的信息,前者隐藏,后者展示给玩家。假设盘面大小是99,这2个二维数组都要开大一圈…...
Leetcode112. 路径总和
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 t…...
生成12位短id,自增且不连续,永不重复,不依赖数据库
基本思路: 设计模式:单例模式 是否加锁:是 synchronized 获取最后一次生成的时间戳值T0 限定初始时间为2023-08-01 00:00:00,获取当前时间时间戳T1,T1与初始时间的毫秒差值T2,转为16进制,转为字符串为r1,获取该字符串的长度L1…...
Zip压缩文件夹php打包函数代码
Zip压缩文件夹php打包函数代码,Zip相关函数是PHP的扩展功能,此函数可以直接复制使用。 以下是代码: <?php # 将文件夹的文件压缩到文件里 class Zip {/*** 将目标文件夹下的内容压缩到zip中(zip包含文件夹目录)* @param $sourcePath *文件夹路径 例: /home/test* @p…...
RISC-V交叉工具链riscv-gnu-toolchain编译
文章目录 1、下载2、编译1. 依赖安装2. 编译 3、运行 1、下载 $ sudo apt-get install git wget build-essential $ git clone https://github.com/riscv-collab/riscv-gnu-toolchain $ git checkout 2023.06.02注意上面 clone 的仓库,我们称其为构建脚本仓库&…...
我能“C“——指针进阶(上)
目录 指针的概念 1. 字符指针 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 4. 数组参数、指针参数 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5. 函数指针 阅读两段有趣的代码&…...
SQLServer2008数据库还原失败 恢复失败
源地址:http://www.taodudu.cc/news/show-1609349.html?actiononClick 还原数据库问题解决方案 在还原数据库“Dsideal_school_db”时,有时会遇见上图中的问题“因为数据库正在使用,所以无法获得对数据库的独占访问权”,此时我们…...
【微服务部署】04-ForwardedHeaders
文章目录 1. ForwardedHeaders1.1 场景1.2 关键的HTTP头1.3 核心处理要点 1. ForwardedHeaders 1.1 场景 获取用户IP获取用户请求的原始URL 1.2 关键的HTTP头 X-Forwarded-ForX-Forwarded-ProtoX-Forwarded-Host 1.3 核心处理要点 设置PathBase设置ForwardedHeaders中间件…...
JVM 垃圾收集器
重点:CMS,G1,ZGC 主要垃圾收集器如下,图中标出了它们的工作区域、垃圾收集算法,以及配合关系。 Serial 收集器 Serial 收集器是最基础、历史最悠久的收集器。 如同它的名字(串行),…...
CSS 样式使用link和@import有什么区别
在页面导入样式时,使用link和import有以下区别: 位置:link标签可以放置在HTML文档的head或body中的任何位置,而import规则必须出现在CSS样式表的顶部。 加载方式:当浏览器解析到link标签时,会立即请求并加…...
LeetCode-2511-最多可以摧毁的敌人城堡数目
题目链接 代码实现: class Solution {/** 找 1 -> -1 的时候,经过0的最大个数* 解题思路:双指针*/public int captureForts(int[] forts) {int len forts.length;if(len1){return 0;}int max Integer.MIN_VALUE;boolean flag false;boo…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
