使用 mplayer 作为 xscreensaver?

使用 mplayer 作为 xscreensaver?

想要运行视频作为我的屏幕保护程序,我遇到了正确配置它的问题。我在这里以问答的形式总结解决方案。

答案1

一、背景

屏幕保护程序在 中配置~/.xscreensaver。使用 时会对其进行修改,在 XFCE 下仅在 Whisker 菜单中xscreensaver-demo命名。Screensaver

要添加程序,请转到设置programs:,它应该类似于

mode:       one
selected:   0

textMode:   url
textLiteral:    XScreenSaver
textFile:   
textProgram:    fortune
textURL:    https://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss
programs:                                     \
  GL:                           superquadrics -root                         \n\
                                attraction -root                            \n\
                                blitspin -root                              \n\
-                               greynetic -root                             \n\
                                helix -root                                 \n\
                                hopalong -root                              \n\
...
  • mode: one意味着使用固定的屏幕保护程序,而不是例如随机选择的屏幕保护程序或只是空白屏幕。这是“将视频作为屏幕保护程序播放”用例的最合适的设置。

  • selected: 0programs表示使用列表中的第一个条目。手册页明确指出要通过xscreensaver-demo而不是手动设置它,但是当在列表顶部添加自定义程序时,将其设置为0一个足够好的选项。

  • text*:选项与这个问题并不真正相关,但默认情况下就有。

  • programs:是命令列表,以 分隔\n。尾随\仅意味着行继续,以便长列表不会在一行上。格式为

    "PROGRAM NAME" COMMAND ARGUMENTS... \n
    

    其中"PROGRAM NAME"是可选的,"如果给出则为必需的。当未指定时,中显示的名称xscreensaver-demo源自COMMAND,例如helix显示为Helix。命令实际上不可用的程序不会列在 中xscreensaver-demo,因此如果视频播放器命令未显示,则可能输入了错误的内容。

2. 配置示例

假设有一个视频文件/home/user/black_hole.mp4。然后将其添加为正确命名的屏幕保护程序选项,programs:设置更改为

programs:                                                                     \
                  "Black Hole"  mplayer -loop 0 -nosound -fixed-vo            \
                                  -wid $XSCREENSAVER_WINDOW                   \
                                  /home/user/black_hole.mp4                 \n\
                                maze -root                                  \n\
  GL:                           superquadrics -root                         \n\
                                attraction -root                            \n\
                                blitspin -root                              \n\
                                ...

不要担心使用适当位置的续行。无论如何,屏幕保护程序都会读取并重写该文件,从而导致任何自定义格式丢失,并且命令和名称大致如上所示对齐。

在给定的示例中,

  • "Black Hole"是配置的屏幕保护程序的显示名称。如果没有这个双引号字符串,它只会Mplayer在 中调用xscreensaver-demo
  • -loop 0告诉播放器无限循环播放视频。
  • -nosound,嗯,禁用声音输出。通常更适合屏幕保护程序。
  • -fixed-vo是必需的,因为默认情况下mplayer会在每个视频之后重新初始化播放窗口。对于循环播放单个视频的屏幕保护程序,这意味着视频重新开始时会出现闪烁,而不是流畅播放。使用-fixed-vo,可以实现流畅的播放,但论坛帖子提到它可能会在某些系统上使程序崩溃。如果您只看到黑屏,或者视频只播放一次,如果此设置是原因,那么可能值得尝试。
  • -wid $XSCREENSAVER_WINDOW需要这样才能在屏幕保护程序上实际看到视频播放。我本来期望该-rootwin选项具有相同的效果,但事实并非如此。

3.多个视频文件。

如果您想播放多个视频文件,只需添加所有文件名即可。该命令是通过 shell 执行的,因此也可以使用通配符,例如/home/user/myscreensavervideos/*

在这种情况下,添加该-shuffle选项可能也是可取的。

4.mplayer对比mpv

在寻找使用视频作为屏幕保护程序的方法时,我主要想到了使用mpv.我选择了mplayer它,因为它已经安装在我的系统上。当您在没有 root 访问权限的工作站上时,这是一个重要的标准。

相关内容