目ずらし記事

mezalaのブログ

全角空白とWindowsのバグ

 めずらしきこと。
 手持ちのNASの容量がちと足りないので,ファイルを整理するか圧縮するかという選択になるが,使い勝手などを考えると,ここはなかなかの悩みどころなのである。
 ファイルの整理というと,不要なファイルの削除,または重複したファイルの削除というところだろう。前者はとにかく時間が必要なので,後者を実施する必要があるわけだが,これは「FileMany -重複ファイル検索削除-」(Shougo Suzaki氏作成)を使わせてもらえばよい。このソフトウェアは非常に便利であって,自動的に重複したファイルをリストアップしてくれる。たとえファイル名が異なっていても,同じ内容であれば重複と判断してくれるところも凄い。ただ,重複するファイルは比較的小さなファイルが多く,あまりNASの空き容量は増えなかった。残念。まぁ,そもそも目的が違うだろう。
 となると,ファイルの使い勝手を低下させることなく圧縮させるという選択肢を求めてゆかなければならない。
 NASの中で最も容量を占めているのが音声ファイルである。その多くはmp3で,WAVのまま保存しているものはほとんどない。DAPで再生できなければ意味がないので,mp3以外のファイル形式による圧縮は現実的ではない。次に多くの容量を占めているのが映像ファイルである。
 さて,mp3がほとんどの音声ファイルに対し,映像ファイルはとにかく色々な形式で保存されている。形式はともかく,将来的にも安心して保存しておけるのはmp4であろうか。色々なコーデックに対応していて,将来画期的なコーデックが出現したときにも,なんとなく劣化を抑制しつつエンコードさせてくれそうな気がする。まぁ,気のせいかもしれないが……。
 mpegから現在標準的なH264もよいが,H265にすることで劇的にファイルサイズを小さくしてくれるに違いない……と思い,まずは100MBくらいの動画ファイルをffmpegエンコードしてみたところ,内容にも左右されるのだろうが概ね半分くらいのサイズにすることができた。
 早速,以下のバッチファイルを作成して,ショートカットにファイルをドラッグ&ドロップすれば変換できるようにした。

ENCOX265.BAT
ffmpeg -i %1 -c:a copy -c:v libx265 -crf 28 "%~n1"_x265%~x1
pause
 一応説明を加えると,「-c:a copy」は〈オーディオは無変換で複写〉,「-c:v libx265」は〈ビデオはコーデックにx265を使用して変換〉,「-crf 28」は〈ほぼデフォルトの画質で圧縮〉,「"%~n1"_x265%~x1」は〈ファイル名の末尾に「_x265」を付加〉といったところだ。「crf」については厳密な説明が難しいが,推奨される範囲で圧縮率を極力上げたといえば大間違いではないと思われる。
 エンコードはひどく時間がかかるので,現在のCPU(core i5)ではちと力不足であり,いずれ core i7 の変換専用機を調達することを考えるとして,問題は他にもあった。
 全角スペースをファイル名に含む場合,ファイル名が分割されてしまい,エラーになってしまうのだ。調べてみると,どうやらWindowsのバグのようである。半角スペースが含まれる場合に備えて"%~n1"と引用符を付けても,ファイル名を渡した段階でぶった切られてしまうので打つ手なしである。暴走するわけではないので,当面はファイル名に全角スペースが含まれる場合は改名しておくという消極的な対処でともかく対応することにするのだが,なんだかスッキリしないのである。