群晖Moments的人物、场景等文件夹无法识别生成bug解决

Moments 的人脸识别bug、第三方社区套件无法加载、及视频转码失败bug#

第一个问题,人脸识别失败bug#

Moments提供了强大的相册分类,相册识别,相册根据人脸和场景自动分类.但是无论黑裙白裙都有不少人遇到Moments的相册渲染失败的问题.

针对此问题网上一堆的答案,各种putty,winscp,甚至需要修改linux基础配置,允许root登录,甚至需要洗白…

以上一系列解决方案有众多冗余操作无需进行,本文亲测的经验将会附上.

首先这个bug存在于Moments,是相册人脸和场景分类失败.

影响文件:

1
/var/packages/SynologyMoments/target/usr/lib/libsynophoto-plugin-detection.so

具体建立索引时的错误日志在:

1
/var/log/synophoto.log

解决方案:#

先看看网上说的最多的几种方案:

要求洗白的: https://zhuanlan.zhihu.com/p/424429988

putty+WinSCP+创建root账号的: https://zhuanlan.zhihu.com/p/95300888

阿文菌的:https://post.smzdm.com/p/aqxmx9wk/

其实以上方案都太复杂了,尤其各种开启root账号,替换文件的教程.本质上只有一个核心-----------替换受影响的libsynophoto-plugin-detection.so文件!

所以全程无需任何工具即可完成:

  • 下载修复的libsynophoto-plugin-detection.so文件,上面后两个文章中都有下载链接.解压后的libsynophoto-plugin-detection.so的md5是:c995d39544ae5aa374c4259429ed1fc5 libsynophoto-plugin-detection.so

  • 下载后传到任意一个群晖的文件夹下,然后将老的/var/packages/SynologyMoments/target/usr/lib/libsynophoto-plugin-detection.so变成/var/packages/SynologyMoments/target/usr/lib/libsynophoto-plugin-detection.so.bak

  • 然后将群晖咱们修改后的libsynophoto-plugin-detection.so放到/var/packages/SynologyMoments/target/usr/lib目录下,替代上面的老的bak的so,真正完成工作.

  • 注意要修改文件属主和组:

    1
    sudo chown SynologyMoments:SynologyMoments libsynophoto-plugin-detection.so
  • 然后,需要在套件中心先停用,再启用Moments

  • 在Moments中点击重新创建索引就解决了.

其实核心比较简单,替换不起作用的老文件,并修改文件属主让它可被使用.

第二个问题,套件中心第三方社区套件无法加载bug#

**问题:**社区套件某天突然在套件中心无法显示,或者新增社区套件地址,提示"无效的位置".

此问题我一度以为是群晖识别到黑群,或者是群晖主动屏蔽了大陆ip导致,没太在意.直到我必须要安装一个ffmpeg套件的时候才查到根源。主要是因为

黑群时间太久,黑群的自带的证书信任验证库过期了(验证方法是手动把时钟日期回调到2016-2020年,确定又可以添加了就是证书过期了,此方法不一定验证成功,因为有的网站时钟不同步也无法访问),导致所有访问https或者http都会证书过期(实际上未过期)。这玩意是随着DSM版本更新更新的。

详情在这里:

https://tieba.baidu.com/p/7594756840

解决方案:#

上文一言以蔽之,更新根证书文件/etc/ssl/certs/ca-certificates.crt

文中推荐:

SSH连接黑群,输入以下命令手动备份并替换ca-certificates.crt
sudo mv /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt.bak && sudo curl -Lko /etc/ssl/certs/ca-certificates.crt https://curl.se/ca/cacert.pem
如果不信任curl提供的证书可以自己去找openssl的证书替换。或者可以自己有能力折腾的手动更新黑群(自带的更新黑群会失败不要用)

当然,我肯定不会使用上面这个来路不明的证书,既然问题是根证书过期.那就从机器上copy一个上去就行.

故: 从本机(linux)或者自己可信的服务器,找到/etc/ssl/certs/ca-certificates.crt 上传到黑群中,然后进入黑群后台,cp覆盖即可。

更新后,套件中心大量的第三方套件都可以加载出来了。

第三个问题,视频缩略图bug#

这个问题通常伴随日志中心报错System failed to convert video [/volume1/xxxxxxxxxxxxxxxx.mp4] to mpeg4.

这个问题需要先在套件中心安装ffmpeg,如果搜不到,按照上一章节先解决套件中心的问题

然后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 看一眼所有的ffmpeg文件
sudo find / -name ffmpeg
/var/cache/pkglist.tmp/icon/AVAIL/SYNO/ffmpeg
/var/cache/pkglist.tmp/icon/AVAIL/OTHER/ffmpeg
/var/packages/ffmpeg
/volume3/@docker/aufs/mnt/eb5c520c46f268f5ababaaa8e7667b6084801b9dbc0c5b52f6fccd144462d30c/usr/lib/jellyfin-ffmpeg/ffmpeg
/volume3/@docker/aufs/diff/b004274646b119389e67cba11f01c1b649d2c7c4c0d33c5ef374c841d06b2f7a/usr/lib/jellyfin-ffmpeg/ffmpeg
/volume3/@appstore/MediaServer/lib/ffmpeg
/volume3/@appstore/MediaServer/bin/ffmpeg
# 我们刚刚安装的目录
/volume2/@appstore/ffmpeg
# 刚刚安装的执行文件
/volume2/@appstore/ffmpeg/bin/ffmpeg
/volume2/@appstore/ffmpeg/share/ffmpeg
/volume2/@tmp/@synopkg/@download/ffmpeg
/usr/local/ffmpeg
/usr/bin/ffmpeg
/usr/syno/etc/packages/ffmpeg

看一眼版本

1
2
3
4
5
6
7
8
9
10
11
12
# 自己安装的是4.4.2
/volume2/@appstore/ffmpeg/bin/ffmpeg -version
ffmpeg version 4.4.2-44 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)



# MediaServer里面是老的3.3.7
/volume3/@appstore/MediaServer/bin/ffmpeg -version
ffmpeg version 3.3.7 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)

替换MediaServer里面的ffmpeg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 备份
sudo mv /volume3/@appstore/MediaServer/bin/ffmpeg /volume3/@appstore/MediaServer/bin/ffmpeg_bak

# 替换
sudo ln -s /volume2/@appstore/ffmpeg/bin/ffmpeg /volume3/@appstore/MediaServer/bin/ffmpeg


# 确认其他目录
ll /usr/bin/ffmpeg
lrwxrwxrwx 1 root root 36 Jan 11 2021 /usr/bin/ffmpeg -> /volume2/@appstore/ffmpeg/bin/ffmpeg

ll /bin/ffmpeg -version
29760 0 lrwxrwxrwx 1 0 36 Jan 11 2021 /bin/ffmpeg -> /volume2/@appstore/ffmpeg/bin/ffmpeg


which ffmpeg
/bin/ffmpeg

重建索引:

moments---左下角---设置---重建索引即可