这里的单词file指的是文件命令,而不是实际的文件。我想确定一个文件是否是一个视频文件(.mpg,.mkv,.avi)。file非常擅长为图像文件返回image,为视频文件返回video,为音频文件返回audio (由于某种原因而返回文本)。我的问题是,这对于识别类型有多可靠。如果我做了一个简单的
file -ib deliverance.avi | grep video这是否适用于所有主视频文件概述的这里
发布于 2011-11-12 02:00:13
file的结果并不完美,某些类型的文件比其他类型的文件有更多的问题。文件基本上只是在可预测的模式中查找特定的二进制数据片段,以找出文件类型。
特别不幸的是,视频中经常使用的一些文件类型属于这个“有问题”的类别。较新的容器格式(如.mp4和.mkv )通常有几种不同的MIME类型,它们应该正确地取决于所包含的数据类型。例如,可以根据内容正确地将.mp4标识为video/mp4、audio/mp4或application/mp4。
在实践中,file经常做出与普通用法相一致的猜测,而且它可能对您非常有用。例如,虽然我提到了正确识别Matroska文件的一些理论困难,但file基本上假设任何Matroska文件都是视频。另一方面,Ogg容器的使用在音频和视频之间分配得更均匀,我相信当前版本的file只会消除差异,并将Ogg文件标识为application/ogg,这将不属于任何类别。
有一件事我可以肯定地说,那就是你想要最新版本的file,你可以得到你的手。包含要匹配的模式和匹配结果的MIME类型的“魔术”文件通常会被更新,以包括较新的文件类型(如WebM ),或者只是为了提高旧类型的准确性。
发布于 2011-11-12 01:53:21
文件的工作方式是将文件的头引用到“魔术号”文件。我怀疑查看从引用列表中查看本地魔术号文件(可能是/usr/share/魔术,但查看man文件中的文件类型)的健壮文件的最佳方法。
发布于 2011-11-12 01:53:47
它似乎应该适用于大多数视频/音频/图像文件。但是,如果没有,实际上有一个文件包含扩展名和类型之间的关系:
标识这些文件的信息是从编译后的魔术文件/usr/share/magic.mgc读取的,如果编译文件不存在,则从/usr/share/魔术读取。
请参阅:file.htm
希望这能有所帮助!
https://stackoverflow.com/questions/8101812
复制相似问题