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