`file` не отображает правильный тип MIME для файлов .m2ts

`file` не отображает правильный тип MIME для файлов .m2ts

Мне нужно определить тип MIME различных видеофайлов, и у меня возникла проблема с.m2tsфайлы. До того, как я наткнулся на это, я использовал fileутилиту с -iLключами и анализировал вывод с помощью sed. Сегодня я обнаружил, что file5.15 определяет тип mime файлов .m2ts как 'application/octet-stream'. О-ладно, я обновил пакет, и теперь он называет их просто 'binary'. Когда я ожидал video/something.

Читая об утилитах, делающих подобную работу, я пробовал 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файл с исправлением и нашел егоздесь. В строках не хватает пробелов, поэтому я привожу их здесь.

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.

RFC3555определили многие MIME subtypesдля транспортного потока MPEG-2, включая video/mp2t. Поэтому я думаю, что это нормально, когда он ограничен video/mp2t.

Связанный контент