通过docker安装配置完成Nextcloud后你会发现所有的视频文件都没有缩略图,这对于管理视频文件来说非常令人头疼。经过多日的摸索,笔者了解到,nextcloud是可以为视频文件产生缩略图的,只是nextcloud需要使用ffmpeg来产生缩略图,ffmpeg虽然功能非常强大,但是也存在两方面的不足:其一是非常占用空间,debian(dockers image所使用的系统)系统中安装ffmpeg需要消耗300多M的硬盘空间,而整个nextcloud的docker镜像也就几百兆;其二,由于牵涉到对视频文件的解码,所以可能比较占用CPU资源,这一点仅为作者的个人直觉,并未完全求证。
一、安装ffmpeg
正如前文所述,nextcloud的视频文件缩略图功能依赖于ffmpeg,因此我们首先需要安装ffmpeg,代码如下:
docker exec -it --user root nextcloud sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
docker exec -it --user root nextcloud apt-get update
docker exec -it --user root nextcloud apt-get -y install ffmpeg
上述代码的第一行是替换容器中的debian系统的软件源为中科大的镜像,这样可以显著提高ffmpeg的下载速度,该设置非必须的,只针对国内用户,当然用户也可根据自己的需要选择其他软件源。
检查ffmpeg是否安装成功,可以运行命令:
docker exec -it nextcloud ffmpeg
如果能看到ffmpeg的版本信息,即表示安装成功。
二、配置nextcloud,打开视频文件缩略图
配置nextcloud需要修改config/config.php文件,需要在文件中插入以下配置片段:
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\\Preview\\Image',
1 => 'OC\\Preview\\Movie',
2 => 'OC\\Preview\\TXT',
),
由于镜像中没有安装文本编辑器,因此我们可以使用 "docker cp"命令将config.php拷贝至宿主机,编辑后重新拷贝回去,这里,选择另一种使用occ命令的方式来添加配置,这种方式不直接改动config.php文件,可以保证文件格式不发生错误,因此更加安全,具体命令如下:
docker exec --user www-data nextcloud php occ config:system:set enable_previews --value="true" --type=boolean
docker exec --user www-data nextcloud php occ config:system:set enabledPreviewProviders 0 --value="OC\\Preview\\Movie"
docker exec --user www-data nextcloud php occ config:system:set enabledPreviewProviders 1 --value="OC\\Preview\\HEIC"
docker exec --user www-data nextcloud php occ config:system:set enabledPreviewProviders 2 --value="OC\\Preview\\MarkDown"
完成上述配置后重启容器,检查效果即可。