自建服务 · 2023年1月29日 0

Nextcloud使用Memories进行视频串流播放

Memories应用支持视频实时转码并使用“HLS”达到最好的效果,在它的设置步骤页面提到“Memories打包了一个支持HLS的转码服务器来适应串流”,通过HLS可以根据网络速率自动将合适分辨率的视频片段发到浏览器上,这常常会带来更佳的体验。

在Nextcoud自带的视频功能中可能会有初次打开耗时较长,经常会拖动进度条卡顿的问题,尤其是Nextcloud上行带宽有限的条件下。那么此时就可以使用HLS来改善这一问题。

Memories作为一个强大的应用,还支持时间线、在线编辑图片等功能,可与人脸识别recognizephotosPreview Generator交互。

一、基本安装

  1. 在“应用”中“Multimedia”找到“Memories”进行安装。
  2. 进入nextcloud根目录,以网站用户(如www-data)运行“php ./occ memories:index”,图片等其他设置请自行参看“Configuration”

二、缩略图生成设置(可选)

默认的条件下Nextcloud仅为常见图片格式(PNG、JPEG、GIF、BMP)展示缩略图,其他格式和视频并不展示。若要为视频展示缩略图请按以下步骤:

使用任意文本编辑器,打开nextcloud根目录下“config/config.php”新增以下内容(可按需求修改,详见wiki

'enabledPreviewProviders' =>
array (
    0 => 'OC\\Preview\\Image',
    1 => 'OC\\Preview\\Movie',
    2 => 'OC\\Preview\\MKV',
    3 => 'OC\\Preview\\MP4',
    4 => 'OC\\Preview\\AVI',
  ),

您还可配置Preview Generator来提前生成缩略图以提升访问速度,设置方法见此

三、安装视频转码所需软件

正确使用需要按照ffmpeg与Intel Media Driver,在Ubuntu系统中可运行以下命令

sudo apt-get update
sudo apt-get install -y intel-media-va-driver-non-free ffmpeg

但是Ubuntu软件仓库中的ffmpeg可能不支持硬件解码,如果在后续配置硬件解码出现问题请参看“编译安装所需软件”部分。

四、配置视频解码

在nextcloud根目录下运行

php ./occ memories:video-setup

会要求选择是否开启转码和HLS,是否开启VAAPI(如果可用)。

若不打开HLS应该就和Nextcloud本身的播放器没有区别。若开启VAAPI就需要GPU进行处理,需要有支持硬解的ffmpeg。

在修改后(含config/config.php相关内容)一定要记得重启Nextcloud所在服务器软件(如apache2)

打开任意一个视频播放,若卡在加载界面并且您启用了HLS和VAAPI可能就是GPU无法成功调用。笔者在Ubuntu 20.04.1下就遇到了这个问题,原因是Ubuntu软件仓库的不支持GPU加速,此时就需要自行编译。

五、编译安装所需软件

运行Memories的wiki中提供的脚本可自动进行编译安装:

curl https://gist.githubusercontent.com/pulsejet/4d81c1356703b2c8ba19c1ca9e6f6e50/raw/qsv-docker.sh | bash

等待编译安装完毕后修改config/config.php中内容,“/usr/local/bin/ffmpeg”即为自动编译安装的安装目录,请改为实际的目录(Memories默认设置是/usr/bin/,可通过“which ffmpeg”来确定具体绝对路径)

  'memories.ffmpeg_path' => '/usr/local/bin/ffmpeg',
  'memories.ffprobe_path' => '/usr/local/bin/ffprobe',

保存后重启nextcloud,尝试播放。笔者在此就能够利用VAAPI进行加速,CPU占用较不开启VAAPI有明显的减少。

以上就是设置视频HLS的过程,其他内容请见wiki部分。

心情表态
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0