ffmpegthumbnailer 命令有效,但 nautilus 无法生成缩略图

ffmpegthumbnailer 命令有效,但 nautilus 无法生成缩略图

为了获得ffmpegthumbnailer支持嵌入图像元数据的较新版本。我手动编译了(当前)最新2.2.2版本github

  -m      : prefer embedded image metadata over video content

以下是有关我的环境的一些信息

➜  ~ nautilus --version
GNOME nautilus 3.26.4

➜  ~ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:    18.04
Codename:   bionic

➜  ~ uname -a
Linux Play-PC-VPC 5.0.0-25-generic #26~18.04.1-Ubuntu SMP Thu Aug 1 13:51:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

➜  ~ echo $0
zsh

➜  ~ g++ --version
g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

以下是我编译/安装它的操作:

sudo apt install build-essential cmake pkg-config
sudo apt install libjpeg-dev libpng-dev zlib1g libavcodec-dev libavformat-dev libavfilter-dev

wget https://github.com/dirkvdb/ffmpegthumbnailer/releases/download/2.2.2/ffmpegthumbnailer-2.2.2.tar.bz2
tar -xvf ffmpegthumbnailer-2.2.2.tar.bz2
cd ffmpegthumbnailer-2.2.2

cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GIO=ON -DENABLE_THUMBNAILER=ON .
make
sudo make install

以下是我配置缩略图的方法(sudo vim /usr/share/thumbnailers/ffmpegthumbnailer.thumbnailer

[Thumbnailer Entry]
TryExec=ffmpegthumbnailer
Exec=ffmpegthumbnailer -i %i -o %o -s %s -f
MimeType=video/jpeg;video/mp4;video/mpeg;video/quicktime;video/x-ms-asf;video/x-ms-wm;video/x-ms-wmv;video/x-msvideo;video/x-flv;video/x-matroska;video/webm;video/mp2t;

附言:请忽略缺失的-m部分,因为我还没有让它显示任何赞。

还尝试使用以下命令删除缓存

rm -r ~/.cache/thumbnails/

它看起来像这样。

带有 nautilus 的 ffmpegthumbnailer

再次强调,我没有totem安装,因为它是minimal install

这是另一张照片ffmpegthumbnailer 工作

ffmpegthumbnailer 命令

我对鹦鹉螺的偏爱:

在此处输入图片描述


尝试过的故障排除步骤:

1. 弯曲

在进一步搜索时(我记不清我在搜索框中输入了什么,哈哈),复制并粘贴它的内容

Ubuntu 18.04-解决 Nautilus 3.26.4+ 外部缩略图问题

sudo wget -O /usr/local/bin/bwrap https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/nautilus/bwrap
sudo chmod +rx /usr/local/bin/bwrap
rm -r ~/.cache/thumbnails/
sudo reboot

不工作,rm /usr/local/bin/bwrap......

哦,玩的时候bwarp,我尝试打印出名为的命令:

/usr/bin/bwrap --ro-bind /usr/local/bin /usr/local/bin bind /home/play_pc/ff_log /home/play_pc/ff_log --ro-bind /etc/alternatives /etc/alternatives --ro-bind /etc/ImageMagick-6 /etc/ImageMagick-6 --ro-bind /var/cache/fontconfig /var/cache/fontconfig --ro-bind /usr /usr --ro-bind /bin /bin --ro-bind /lib64 /lib64 --ro-bind /lib /lib --ro-bind /sbin /sbin --proc /proc --dev /dev --chdir / --setenv GIO_USE_VFS local --unshare-all --die-with-parent --bind /tmp/gnome-desktop-thumbnailer-FL9UJ0 /tmp --ro-bind /home/play_pc/Downloads/wo_feature.mkv /tmp/gnome-desktop-file-to-thumbnail.mkv --seccomp 17 ffmpegthumbnailer -i /tmp/gnome-desktop-file-to-thumbnail.mkv -o /tmp/gnome-desktop-thumbnailer.png -s 256 -f

2. mv ffmpegthumbnailer

所以......这bwarp件事让我开始思考也许是绑定路径导致了问题,所以我移动了ffmpegthumbnailer执行文件

➜  ~ which ffmpegthumbnailer
/usr/local/bin/ffmpegthumbnailer

➜  ~ sudo mv /usr/local/bin/ffmpegthumbnailer /usr/bin/ffmpegthumbnailer

➜  ~ which ffmpegthumbnailer
/usr/bin/ffmpegthumbnailer

但...它仍然不起作用

3.检查权限

➜  ~ ls -l /usr/local/bin
total 32
-rwxr-xr-x 1 root root 30576 May  4 20:46 ffmpegthumbnailer

➜  ~ sudo ls -l /usr/share/thumbnailers/
total 20
-rw-r--r-- 1 root root 803 Jun 19  2019 evince.thumbnailer
-rw-r--r-- 1 root root 259 May  4 20:52 ffmpegthumbnailer.thumbnailer
-rw-r--r-- 1 root root 525 Mar 16  2018 gdk-pixbuf-thumbnailer.thumbnailer
-rw-r--r-- 1 root root 213 Mar 13  2018 gnome-font-viewer.thumbnailer
-rw-r--r-- 1 root root 158 Dec 31  2017 librsvg.thumbnailer

➜  ~ sudo killall nautilus         
nautilus: no process found

➜  ~ rm -r ~/.cache/thumbnails
➜  ~ mkdir ~/.cache/thumbnails
➜  ~ chown -R play_pc:play_pc ~/.cache/thumbnails
➜  ~ sudo reboot

4. 改用 abs-path

[Thumbnailer Entry]
TryExec=/usr/local/bin/ffmpegthumbnailer
Exec=/usr/local/bin/ffmpegthumbnailer -i %i -o %o -s %s -f
MimeType=video/jpeg;video/mp4;video/mpeg;video/quicktime;video/x-ms-asf;video/x-ms-wm;video/x-ms-wmv;video/x-msvideo;video/x-flv;video/x-matroska;video/webm;video/mp2t;

到目前为止,我觉得我已经没什么主意了。有人能告诉我可以尝试什么吗?拜托

答案1

由于某种原因,共享库无法工作/usr/local/lib
我可以通过添加几个步骤来显示缩略图。
您的最后一个操作是
sudo make install
继续
sudo ldconfig
sudo mv /usr/local/lib/*ffmpegthumb* /usr/lib
不太确定这是否是这些库的“合法”位置。
我注意到默认库位置在 16.04 上有效,想知道有什么区别。在 20.04 上测试,也需要在那里移动库。

答案2

我的视频的缩略图查看器:


以下是我 (在 18.04 上) 为专有文件类型生成缩略图的概述,我们将其称为 myvideo,视频的子类型。它应该包含您需要的内容 (最后一项)。假设生成缩略图的二进制文件已经构建并称为gnome-thumbnail-myvideo

安装:

  • 制作一个 mimetype video/myvideo(myvideo 是 mediatype video 的子类型)
    这里解释了如何仅为当前用户制作它
    mkdir ~/.local/share/mime/packages(如果尚不存在)
    复制 myvideo.xml 以.local/share/mime/packages
    检查它是否可读
    sudo update-mime-database ~/.local/share/mime/

  • 在文件管理器中安装 myvideo 的图标
    确保图标对所有人都可读:
    chmod +r video-myvideo.svg
    由于 myvideo 是媒体类型 video 的一部分,它现在应该已经有了这种类型的通用图标
    检查图标主题 然后以
    gsettings get org.gnome.desktop.interface gtk-theme
    find /usr/share/icons | grep video-x-generic
    合适的格式将图标的副本放置在相关图标主题(例如 Humanity)中找到 video-x-generic 的所有位置... 检查它是否仍然对所有人都可读(经验表明复制可能会更改权限)。 更新图标缓存:(
    sudo update-icon-caches /usr/share/icons/*
    sudo gtk-update-icon-cache /usr/share/icons/Humanity或另一个)准备就绪。

  • 将程序 gnome-thumbnail-myvideo 复制到 /usr/local/bin(sudo)
    由于缩略图沙盒存在问题(从 18.04 开始),您无法在本地用户文件夹中使用该程序
    将其复制到 /usr/local/bin 后,检查它是否可执行
    检查它是否可读
    将缩略图文件(例如 myvideo.thumbnailer)放在 /usr/share/thumbnailers 或 /usr/local/share/thumbnailers 中
    关闭文件管理器
    rm ~/.cache/thumbnails 子文件夹下的所有 *.png 文件
    重新启动文件管理器,它应该可以工作,或者在注销/登录后

答案3

没有使用 Ubuntu,但是这个建议可能会有帮助。

我实际上在 Arch Linux 中使用来自 AUR 的 Xanmod 内核:

Linux version 5.8.6-xanmod1-1 (makepkg@archlinux) (gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP PREEMPT Thu, 10 Sep 2020 00:51:21 +0000

在编译过程中我将其设置CONFIG_USER_NS_UNPRIVILEGEDn

$ zcat /proc/config.gz | grep --color=auto CONFIG_USER_NS_UNPRIVILEGED
# CONFIG_USER_NS_UNPRIVILEGED is not set

正如在建筑维基

注意:在 Linux 强化版上,缩略图生成失败(所有缩略图都进入 ~/.cache/thumbnails/fail/)。这是因为出于安全原因,此内核默认禁用非特权用户命名空间。Nautilus 使用 bwrap(由 bu​​bblewrap 提供)对缩略图进行沙盒处理。您可以决定用 bubblewrap-suid 替换 bubblewrap。

这是我的问题。确保您没有使用CONFIG_USER_NS_UNPRIVILEGED未设置的 Linux 强化或自定义编译内核。

这可能有点难找到,所以我分享了我的答案。我还针对此问题发布了错误报告!然后我发现这是我的错。

相关内容