Ответ 1
Результаты file
менее совершенны, и у него больше проблем с некоторыми типами файлов, чем у других. Файл в основном просто ищет отдельные части двоичных данных в предсказуемых шаблонах для определения типов файлов.
К сожалению, в частности, некоторые типы файлов, которые часто используются для видео, попадают в эту "проблемную" категорию. Новые форматы контейнеров, такие как .mp4
и .mkv
, обычно имеют несколько разных типов MIME, которые должны должным образом зависеть от того, какой тип данных содержится. Например, .mp4
может быть правильно идентифицирован как video/mp4
, audio/mp4
или application/mp4
в зависимости от содержимого.
На практике file
часто делает догадки, которые просто соответствуют общему использованию, и это может отлично сработать для вас. Например, в то время как я упомянул некоторые теоретические трудности с определением файлов Matroska правильно, file
в основном предполагает, что любой файл Matroska является видео. С другой стороны, использование контейнера Ogg более равномерно распределено между аудио и видео, и я считаю, что текущая версия file
просто разделяет разницу и идентифицирует файлы Ogg как application/ogg
, которые не попадают в любой из ваших категорий.
Единственное, что я могу с уверенностью сказать, это то, что вы хотите получить самую последнюю версию file
, которую вы можете получить. "Магические" файлы, содержащие шаблоны для соответствия и типы MIME, которые будут возникать в результате соответствия, обновляются довольно часто, чтобы включать более новые типы файлов, такие как WebM, или просто для повышения точности для более старых типов.