开发日志 | 一些群晖笔记

1. 群晖NAS中生成视频缩略图

由于群晖在DSM 7.2.2版本后删除了服务器端编解码功能和Video Station套件,导致存储在NAS中的视频无法再自动生成缩略图。目前有一个方法是利用FileBot和Docker绕过群晖原生索引,强制生成缩略图。该指令使用了FileBot内置的FFmpeg来生成缩略图,并且每次使用都属于增量更新,已存在缩略图的视频不再生成。

sudo docker run --rm -e PUID=0 -e PGID=0 -v 'data:/data' -v "<视频路径>:<视频路径>" rednoah/filebot -find "<视频路径>" --filter 'def i = f.dir / "@eaDir" / f.name / "SYNOVIDEO_VIDEO_SCREENSHOT.jpg"; f.video && !i.exists() && seconds > 0 && (i.dir.exists() || i.dir.mkdirs())' -exec ffmpeg -an -ss '{seconds/5}' -i '{f}' -vframes 1 -vf scale=size=hd480:force_original_aspect_ratio=decrease -f mjpeg -y '{folder}/@eaDir/{f.name}/SYNOVIDEO_VIDEO_SCREENSHOT.jpg'
Bash

使用时需要将指令中的3处<视频路径>替换成存储视频的实际路径(例如 “/volume1/video”)。

如有多个存储视频的文件夹,可以使用这些文件夹相同的根文件夹。

-v参数中需要填写两个路径并用冒号相连(格式为”主机路径:容器路径”),但通常与-find参数一致使用视频路径即可。

如在SSH终端中使用,只需使用指令,输入root密码后终端会提示“YOU ARE RUNNING AS ROOT AND NOT AS NORMAL USER”,然后自动开始生成缩略图。

如在群晖任务计划中使用,则去掉sudo,并将运行用户设置为root。

指令初次运行时,会自动在Docker中安装并运行rednoah/filebot。

如使用后发现个别视频没有产生缩略图,则手动在SSH终端中使用下面的指令,<视频路径>与前面使用的相同,<无缩略图视频路径>修改为没有产生缩略图的视频的路径。

sudo docker run --rm -e PUID=0 -e PGID=0 -v 'data:/data' -v "<视频路径>:<视频路径>" rednoah/filebot -find "<无缩略图视频路径>" -exec ffmpeg -an -ss 10 -i '{f}' -vframes 1 -vf scale=size=hd480:force_original_aspect_ratio=decrease -f mjpeg -y '{folder}/@eaDir/{f.name}/SYNOVIDEO_VIDEO_SCREENSHOT.jpg'
Bash

2. 群晖Docker设置网络代理

因为网络上的一些众所周知的原因,国内直接下载Docker镜像不是下不动就是下得很慢。虽然DSM控制面板里可以设置系统代理,让用户可以正常使用ContainerManager搜索,但Docker守护进程不受那个系统代理影响,下载镜像的时候依旧很慢。要想让下载快起来,就需要创建一个配置文件强制让Docker后台服务走代理。

首先登入SSH终端获取root权限,并创建配置文件夹。

mkdir -p /etc/systemd/system/pkg-ContainerManager-dockerd.service.d
Bash

然后创建代理配置文件。(后续修改使用相同的指令)

vi /etc/systemd/system/pkg-ContainerManager-dockerd.service.d/http-proxy.conf
Bash

在配置文件中输入以下内容,IP部分改为实际的代理服务器IP和端口。

[Service]
Environment="HTTP_PROXY=http://192.168.X.X:7890"
Environment="HTTPS_PROXY=http://192.168.X.X:7890"
Environment="NO_PROXY=localhost,127.0.0.1,*.cn"
INI

esc,然后输入:wq退出。

重载并重启服务。

systemctl daemon-reload
systemctl restart pkg-ContainerManager-dockerd
Bash

需要注意的是,该配置文件只影响Docker后台服务,也就是下载的那部分。如果你需要使用ContainerManager搜索镜像,则还需要开启DSM控制面板中的系统代理。

另外一种办法是在hub.docker.com上搜索镜像,然后在ssh终端使用docker pull指令来下载。在终端中下载完成的镜像同样会出现在ContainerManager中。

3. 恢复Video Station套件及服务器端编解码功能

目前可以通过两个脚本在群晖DSM 7.2.2及以上版本中恢复Video Station套件及服务器端编解码功能。两个脚本均需要在SSH终端中使用root权限运行。

第一条指令用于重新安装Video Station套件、媒体服务器和Advanced Media Extensions (AME)。

bash -c "$(curl "https://raw.githubusercontent.com/007revad/Video_Station_for_DSM_722/main/videostation_for_722.sh")"
Bash

运行后,终端会提供四个选项:1) Install All 2) Only Advanced Media Codecs 3) Skip Video Station 4) Skip Media Server,可以根据需要选择全部安装、只安装AME或跳过某个套件。

安装完成后需要进入Advanced Media Extensions套件手动安装HEVC和AAC解码器。

该脚本同时还恢复了Synology Photos中的HEIC缩略图功能。

该脚本开源地址:007revad/Video_Station_for_DSM_722

如果需要额外恢复DTS,EAC3和TrueHD音频的解码,则需要使用第二个脚本。在使用该指令前,必须通过SynoCommunity安装社区版FFmpeg 7套件。

curl https://raw.githubusercontent.com/AlexPresso/VideoStation-FFMPEG-Patcher/main/patcher.sh | bash -s -- -v 7
Bash

运行后,等待脚本自动安装完成即可。

该脚本开源地址:AlexPresso/VideoStation-FFMPEG-Patcher

完成以上内容后,如遇更新DSM版本,可能提示需要卸载Video Station,卸载时不要勾选删除Video Station数据库的选项。

完成DSM更新后,软件包中心会显示Advanced Media Extensions和媒体服务器与您的DSM不兼容,此时需要再跑一遍上面的脚本才能继续使用。

要发表一条评论吗?

您的电子邮箱地址不会被公开。 必填项已标注