.flv和.f4v文件扩展名显示意外的mime类型

时间:2012-12-21 01:16:15

标签: php mime-types flv

当我在.flv中查找我的f4vphp的mime类型时,它将它们声明为:application / octet-stream。

我一直认为这些文件的mime类型是'video / x-flv'和'video / x-f4v'。这是一个新事物,还是来自时髦源码的文件?

2 个答案:

答案 0 :(得分:1)

我在this answer中提到Winista和URLMon都没有正确检测到swf或flv。这就是为什么你正在使用的php组件无法完全识别' video / x-flv'和'视频/ x-f4v'文件。

Winista使用 magic 文件(其中包含MIME类型列表和各自的十六进制字符,用于指示特定文件的起始位)。

我建议您关注为什么没有其他人能够为这个神奇的文件添加flv检测。 winista项目是来自旧的Java开源项目的端口。

我唯一的另一个想法是尝试ffmpeg,也许它有智能来检测这些flv和f4v文件的确切MIME类型。

答案 1 :(得分:0)

我遇到过类似的问题。我的PHP 5.4.7上的FileInfo(在Windows下的XAMPP中)能够将.flv文件检测为video/x-flv,但.mkv视频失败(应将其检测为{ {1}},但返回video/x-matroska)和许多其他非典型的多媒体格式。

为了解决这个问题,我完全删除了FileInfo并使用以下函数恢复到旧的,良好的 mime-by-extension 方法:

application/octet-stream

您可以在pastebin.com找到public static function getMimeTypeByExtension($file) { $extensions = require('mimeTypes.php'); if(($ext=pathinfo($file, PATHINFO_EXTENSION))!=='') { $ext=strtolower($ext); if(isset($extensions[$ext])) return $extensions[$ext]; } return null; } 的内容。它由我编译,通过合并来自Yii Framework的Apache SVN's mime.types file和类似的mimeTypes.php数组。结果集在文件扩展名和相应的MIME类型之间有超过1000个关系。

重要说明:在使用此解决方案之前,您必须仔细考虑,您需要它的目的是什么?通过简单地更改该扩展名,可以非常容易地欺骗基于文件扩展名的MIME类型。因此,任何与安全相关的代码都应该尽可能远离我的解决方案。

我只是为了为flowplayer提供正确的MIME类型的视频文件而需要它。我假设,如果用户将此类文件的扩展名更改为其他内容,则流媒体播放器将无法播放该电影。