ファイル種別の判定

ここのところ、ファイルの種別を判別する方法を悩んでいる。Windowsでは、ファイル拡張子で、いいかげんに判別しているのだが、そのおかげでいとも簡単にだまされてしまう。UNIX系のOSなら、fileコマンドでファイルのマジックナンバーによる判別することができる。
しかし、ファイルの種別の粒度にもいろいろあり悩みどころである。たとえば、".mpg"なんていうのはその代表的なもので、MPEG1なのかMPEG2なのか、ひょっとしてMPEG4だったりするかもしれない。その違いは、マジックナンバーで判別できるのだが、さらにAUDIOファイルなのか、それともMOVIEファイルなのかまでは、マジックナンバー程度の情報では判別できそうもない。