Мне нужно определить тип MIME различных видеофайлов, и у меня возникла проблема с.m2tsфайлы. До того, как я наткнулся на это, я использовал file
утилиту с -iL
ключами и анализировал вывод с помощью sed
. Сегодня я обнаружил, что file
5.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
.