mieki256's diary



2022/07/27(水) [n年前の日記]

#2 [ubuntu][linux] xscreensaver経由で動画を再生

Linux上で動くメジャーなスクリーンセーバ、xscreensaver を経由して動画を再生してみたいなと思い立った。

もし動画を再生できるなら、わざわざスクリーンセーバのプログラムを作らなくても、何かしらのCGツールを使って動画を作ってソレを流しとけばいいじゃん、ってことになりそうだよなと…。

そんなわけで試してみた。動作確認環境は、Ubuntu Linxu 20.04 LTS。xscreensaver が利用できる状態になっていること。

参考ページ。 :

mpvのインストール。 :

動画再生用ツールとして mpv をインストールする。Ubuntu の場合はパッケージが用意されていた。ありがたや。
sudo apt install mpv

プレイリストファイルを作成。 :

mpv に渡すためのプレイリストファイルを作成する。前述の参考ページに倣って、~/.config/screensaver.m3u というファイル名にしておく。
vi ~/.config/screensaver.m3u
#EXTM3U

/home/USER/Videos/hoge.mp4
/home/USER/Videos/
  • 1行目には、「#EXTM3U」と記述する。これで、m3u形式のプレイリストと判別されるらしい。
  • 3行目あたりから、動画ファイル(.mp4)のパスを記述。あるいは、動画が入っているディレクトリのパスを記述しても良い。
  • 更に、youtube-dl なるツールが利用できる場合は、YouTube の動画のURLを記述して、それを再生することも可能らしい。ただ、今回は、youtube-dl を導入してないので、そのあたりの記述は削除した。

以下は、参考ページで紹介されていた記述例。
#EXTM3U

/path/to/some_video.mp4
/path/to/dir_with_many_videos/

# any youtube video or other sites supported by `youtube-dl`
https://www.youtube.com/watch?v=Xjs6fnpPWy4

xscreensaver の設定ファイルを編集。 :

xscreensaver の設定ファイル、~/.xscreensaver を編集する。programs: 以下に mpv起動用の項目を追加する。
vi ~/.xscreensaver
"MPV"  mpv --really-quiet --no-stop-screensaver      \
          --fs --wid=$XSCREENSAVER_WINDOW             \
          --no-audio --loop=inf --shuffle             \
          --ytdl-format="bestvideo[height<=1080]"     \
          $HOME/.config/screensaver.m3u             \n\
上記はスペース文字で記述してしまっているけれど、実際に追加する際は、TAB文字有効、かつ、TABは8スペースでインデント等をしたほうが良さそう。

まあ、一旦は1行で記述してしまって、xscreensaver の設定ウインドウで何かしら値を変更すれば、~/.xscreensaver が整形された状態で上書き保存されるので、手作業でインデントを整えなくてもいいのかもしれない。

オプションの意味は以下。
  • --really-quiet : stdout(標準出力)への出力を抑制。
  • --no-stop-screensaver : mpv自体をスクリーンセーバにする、らしい。
  • --fs : フルスクリーン表示
  • --wid=$XSCREENSAVER_WINDOW : 環境変数 XSCREENSAVER_WINDOW で与えられたウインドウIDに描画する。
  • --no-audio : 無音にする。
  • --loop=inf : ループ再生
  • --shuffle : シャッフル再生
  • --ytdl-format="bestvideo[height<=1080]" : YouTubeの動画を再生する場合の指定
  • $HOME/.config/screensaver.m3u : プレイリストファイルのパスを指定

xscreensaver は、スクリーンセーバを実行する際、環境変数 XSCREENSAVER_WINDOW に、スクリーンセーバ画面のウインドウIDを設定してくれるらしい。

つまり、件の環境変数を読み取って、そのウインドウIDを管理して描画ができる言語であれば、xscreensaver用のスクリーンセーバを作れるはず…。なのだけど、ソースコードに添付されていたドキュメントには、「まあ、そんなことができるのってC/C++ぐらいだから、実際にはC/C++で書くことになるだろうね」みたいな感じの一文が書いてあった気がする。

ただ、mpv は、自身が利用するウインドウを --wid オプションで指定できるので…。故に mpv を使えば好きな動画をスクリーンセーバとして再生できるのだろうなと。

動作確認。 :

xscreensaver の設定画面を出して、「MPV」を選ぶ。

これで、スクリーンセーバが起動する際、プレイリストファイル ~/.config/screensaver.m3u 内に記述した動画が再生された。

余談。 :

手元の環境ではデスクトップとして Xfce を使っているけど、デフォルトでは xfce4-screensaver というスクリーンセーバがインストールされていて、~/.xscreensaver を修正しても修正内容が反映されなかった。xscreensaver をインストールしてそちらを使う状態にしないと、~/.xscreensaver は読まれないらしい。

xfce4-screensaver のアンインストールと、xscreensaver のインストールは以下。
sudo apt remove xfce4-screensaver
sudo apt install xscreensaver

今時の Ubuntu は、xscreensaver を使わずに、gnome-screensaver 等々、違うスクリーンセーバがデフォルトで入っているので、そのあたりはちょっと注意。各スクリーンセーバがどの設定ファイルを読み込むのかが分かれば、xscreensaver に切り替えずに済むのだろうけど…。

以上です。

過去ログ表示

Prev - 2022/07 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project