ThumbnailCityの仕組み

この記事では、ThumbnailCityの仕組みについて技術的な解説をしています。

mp4やFLVのような一般的な動画ファイルは、mp3とは異なりサムネイルをファイル内に格納する仕様が存在しません。したがってExplorerのようなファイラーは、動画から映像を1枚抜き出して表示用のサムネイルを作っています。Windowsの場合、この機能を持ったソフトウェアを「サムネイルプロバイダー」と言います。つまり、「動画ファイルのサムネイルを変更」することは、「サムネイルプロバイダーが映像を選ぶ方法を変える」ことを意味します。「動画ファイル内のサムネイルを書き換える」という考え方は成り立ちません。

サムネイルプロバイダーとは

サムネイルプロバイダーは拡張子毎に置き換えが可能で、mp4やwmv等のサムネイルプロバイダーはOSの一部として提供されていますが、FLV等のそれは3rdパーティのソフトウェアとして提供されています。

Explorer等のアプリは、サムネイルキャッシュを経由してサムネイルプロバイダーにサムネイルを要求しますが、動画のどの位置を画像化するかを要求しません。そのため、一般に提供されているサムネイルプロバイダーは、動画の固定された位置の画像を生成するなど、分かりにくい画像をサムネイルにしてしまいがちです。

ThumbnailCityは、動画ファイル毎にサムネイルの位置をADSと呼ばれるファイルに付随する領域に記録し、位置情報の有無や拡張子の種類に応じて元のサムネイルプロバイダー、DirectShow又はMediaFoundationを使用してサムネイルを生成しています。

こうした仕組みにより、ThumbnailCityは以下の機能を実現しています。

  • サムネイルキャッシュが消えても、指定したサムネイルが再び表示される。
  • サムネイルを指定しない場合は、元のサムネイルが表示される。
  • 動画ファイルを移動やコピーしても、位置情報も一緒に移動やコピーされる。(シェアウェア版のみ)

一方で、以下のような制限事項も存在します。

  • FLV等のOSが標準でサポートしていない動画は、それ用のSplitterやDecorderが必要になる。
  • 動画ファイル毎に保存されるサムネイル位置情報は、NTFS又はReFS上でしか記録できない。