当我在.flv
中查找我的f4v
和php
的mime类型时,它将它们声明为:application / octet-stream。
我一直认为这些文件的mime类型是'video / x-flv'和'video / x-f4v'。这是一个新事物,还是来自时髦源码的文件?
答案 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类型的视频文件而需要它。我假设,如果用户将此类文件的扩展名更改为其他内容,则流媒体播放器将无法播放该电影。