为NC的图片和视频添加缩略图功能
errol发表于2024-03-29 12:58:19 | 分类为 系统/软件 | 标签为nextcloud缩略图

使用nextcloud的时候,有个很蛋疼的问题,在默认的情况下,上传的图片&视频不会生成缩略图,导致了很不好的体验:图片每次都需要下载,有些大图会花上不少时间;视频则需要播放之后,才能知道里面的内容,而视频资源加载也是一个很耗时的过程。

image

图1 nc视频 (无缩略图)

也就是说,NC没有快速预览的功能。

在这种条件下,如果还没有文字等信息的辅助时,想要在一堆视频中查找某一个就必须要进行对其“遍历”:将视频逐个打开,待加载完成后,查看里面的内容...

当然,也不是说这种方式没法用,就是效率有点低,而且在文件体量较大或网络不佳的情况下,这个问题会被放大。

反观,隔壁百度云在这方面做得比较完善。

image

图2 百度云

上传到百度云的视频,可以通过缩略图提前得知视频的内容。

缩略图对于人力筛选和识别有很重要的意义。

不知道nc官方出于什么原因没把这个功能做上去,在我看来,对于网盘来说,这算是一个比较基本的需求,缺少了它,网盘文件的管理效率会大打折扣。

不过好在nc是开放型的系统,可对它的功能进行拓展和定制化,即是说nc的缩略图功能,可以通过拓展方式来实现,虽然需要捣鼓一下,但也并不复杂。

主要依赖于三个模块:ffmpeg、Memories、Preview Generator。

其中ffmpeg是一个处理影音视频的工具;Memories和Preview Generator为NC的插件,前者用于为照片、视频生成元数据(metadata),如时间、地点、标签等,可以更好地管理文件,后者的功能如同其名,用于生成预览图(缩略图)。

下面开始安装和配置。

需要注意的是,之前作者安装的nc配置出过一点问题,为此折腾了很久,重装的方法也尝试过,但最终还是没能再启动,只能选用其他的安装方式,并在snap和docker之间选择了前者,所以以下是在snap的环境下进行的操作,可以保证的是,大体上的步骤都是类似的。

一、ffmpeg模块

1、下载

这里下载对应系统架构的文件,并解压至指定的目录。

wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-arm64-static.tar.xz

# 解压
tar -xvf ffmpeg-release-arm64-static.tar.xz

# 创建目录(如果已经存在时可以忽略)
mkdir -p /var/snap/nextcloud/bin

# 将ffmpeg和ffprobe移动至该目录
mv ffmpeg-6.1-arm64-static/ff* /var/snap/nextcloud/bin

2、修改NC配置文件

在config.php中新增如下配置,并保存退出。

sudo vi /var/snap/nextcloud/current/nextcloud/config/config.php

<?php
$CONFIG = array (
    // ... 其他配置
    'preview_ffmpeg_path' => '/var/snap/nextcloud/bin/ffmpeg',
    'memories.vod.ffprobe' => '/var/snap/nextcloud/bin/ffprobe',
    'memories.vod.ffmpeg' => '/var/snap/nextcloud/bin/ffmpeg',
);

二、Memories模块

打开nc的应用管理界面,搜索memories插件并启用。

image

图3 应用管理 - memories

随后在命令行执行以下命令:

sudo /snap/bin/nextcloud.occ memories:index

该命令会为存在的照片、视频生成元数据(metadata)。

三、Preview Generator模块

1、安装插件

与上一步类似,在应用管理界面搜索Preview Generator插件并启用。

image

图4 应用管理 - Preview Generator

2、修改配置文件

随后再次编辑config.php文件,新增如下配置。

sudo vi /var/snap/nextcloud/current/nextcloud/config/config.php

<?php
$CONFIG = array (
    // ... 其他配置
    'enable_previews' => true,
    'enabledPreviewProviders' =>
    array (
        0 => 'OC\\Preview\\Image',
        1 => 'OC\\Preview\\Movie',
        2 => 'OC\\Preview\\TXT',
    ),
);

并执行以下命令:

sudo /snap/bin/nextcloud.occ preview:generate-all -vvv

该命令会为已经存储与nc的图片、视频创建缩略图,此后上传的图片、视频会自动生成。

image

图5 preview:generate-all命令输出

待命令执行完毕后,再次打开nc时,可以看到已经成功生成缩略图了。

image

图6 nc视频 (有缩略图)


总的来说,由于nc官方没有将缩略图功能集成在系统中,导致需要额外的安装和配置,这确实有点麻烦,但现在以结果论来说,目的已经达到了。

在缩略图的加持下,感觉nc的使用体验比之前提升了一个档次。

返回