`file` は .m2ts ファイルの適切な MIME タイプを表示しません

`file` は .m2ts ファイルの適切な MIME タイプを表示しません

さまざまなビデオファイルのMIMEタイプを定義する必要があり、問題が発生しました.m2tsファイル。これに遭遇する前は、キーfileを指定してユーティリティを使用し-iL、出力を で解析していましたsed。今日、5.15 では .m2ts ファイルの MIME タイプが「application/octet-stream」として定義されていることがわかりましたfile。よし、パッケージを更新したら、今は単に「binary」と呼ばれるようになりました。ビデオ/何かを期待していたのに。

同様の機能を持つユーティリティについて読んで、試してみましたxdg-mime query filetype。 の問題xdg-mimeは、ファイルの拡張子しか参照しないことです。 .m2ts は 'video/mp2t' として定義されますが、そのような拡張子を持つ空のテキスト ファイルでも、すべて表示されます。

.m2ts ファイルは実際にはストリームなので、ストリームと呼ぶのは正しいかもしれませんが、では、なぜ MIME データベースで拡張子が 'video/mp2t' にバインドされているのでしょうか?

$ grep m2ts /usr/share/mime/video/mp2t.xml
  <glob pattern="*.m2ts"/>

答え1

@Patrick が提供してくれたリンクのおかげで、これはfile何の関係もなくshared-mime-info、データベースは /usr/share/misc/magic.mgc にあることが分かりました。そこで、~/.magic修正のファイルを Google で検索して見つけました。ここ行間にスペースがないのでここに引用します

4 byte 0x47
>5 beshort 0x4000
>>7 byte ^0xF
>>>196 byte 0x47
>>>>388 byte 0x47
>>>>>580 byte 0x47 M2TS MPEG transport stream, v2
!:mime video/MP2T

答え2

.m2tsは、に基づいて、オーディオ、ビデオ、およびその他のストリームを多重化するために使用されますMPEG-2 transport stream container

RFC 3555MIME subtypesMPEG-2 トランスポート ストリームには が多数定義されており、 も含まれますvideo/mp2t。したがって、 に制限されるのは正常だと思いますvideo/mp2t

関連情報