おれのIT日記

2025/06/04 (水)

Perl

VLCで快適に動画を見るためにxspfファイルを活用


 昔の、地デジ以前のテレビ録画ファイルが大量にある。主に「水曜どうでしょう」だが、PCで鑑賞すると、CMが気になる。
 以前は元気だから、一所懸命にカット編集してたんだけど、結構面倒くさい。
 また、これは全く思いつかなかったことだが、過去のCMというのは、実は貴重な映像情報じゃないか?と、最近思うようになった。

 つまり、当時の動画ファイルはそのまま残し、頭出し情報だけ、別ファイルで追加したい。

 たとえば、チャプターも、こんなテキストを作っておいて、VLC上で、それを解釈して頭出しができると、テキスト編集好きなおれには、便利である。



 そこで、例によってChatGPT(無料)に相談すると、mkv形式にしてはどうかという。それ以外の動画だと、チャプターを付けるには動画ファイルそのものに埋めねばならんのだと。
 それは面倒だ。
 しかも、過去の動画の再エンコすると時間がかかるうえ、不要な設定で画質を下げちまったり、画質はそれ以上上がらないのにサイズだけ増しちまったり、しまいには作業を誤って消しちまったりなんて、願い下げだ。
 いまある動画ファイルそのままに、チャプターだけ付けられんのだろうか。たとえば、VLCだとsrtファイルを作って字幕を付けられるでしょう。
 あれは単純なテキストファイルで実現できて、とても気にいっている。

 するとChatGPTが言うには、xspfを作ってはどうか?と。
 同じファイルの、何分何秒、何分何秒……と、再生リストを作っておけば、チャプターとは厳密には違うけど、同じようなことができるであろう、と。
 こんな感じ。



 なるほど、このようなxspfが、ちゃちゃっと作れれば、おれの望みは達せられるようだ。
 しかしこんなxspfファイルを、手でいちいち書いたら大変だから、冒頭に掲げたテキストから、自動生成したい。
 申訳ないけどPerlだ。RubyもPythonも今から覚える元気はないぞ。
 (PerlはPerlでも、Perl4時代に書き方に近いのが申訳ないが……三つ子の魂百まで、だねぇ)
 こういった、ちっちゃいユーティリティの仕様については、人によって趣味も違うだろうが、おれの場合は、
  ~.mp4 (ターゲットの動画ファイル)
  ~.txt (チャプター相当の区切りを記したテキストファイル)
  ~.xspf (生成されるxspfファイル)
 というように、同じベースネームで揃えるのが、大量のファイルを整理しやすくて、好きなのだ。
 xspfのファイルのロケーション記述は、LinuxとWindowsで作り分けないといけない。同じOSでも、ファイルを移動したら、もちろん、作り直さねばならん。
 だから、大切な頭出しのテキストだけは大事に保存して起き、xspfは、使う環境を替えた都度、コマンド一発で再生成できると便利だ。

 Windowsのコマンドプロンプトのイメージで示すと、こんな操作感が、俺の理想。例によって「誤ったWindowsの使い方」爆発だが……



 というわけで、作った。自分用には充分だが、お見せするほどのものでもない……でも最近日記も更新してないから、書いてみた。
 なんとなく、使い勝手は伝わりますかね。
 説明してない引数の扱い方仕様とかもありますが、常識的なところだけです。汚くて恥ずかしいスクリプトだが、自分用のバックアップも兼ねて(最近よく間違えて消すからなぁ俺)載せておきます。いっぱい改良してください。



 気が向いたら改良します。