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



当我查找我的.flv的MIME类型并在phpf4v时,它会将它们声明为:application/octet-stream。

我一直认为这些文件的 mime 类型是"video/x-flv"和"video/x-f4v"。这是新事物还是文件来自时髦的来源或其他什么?

我在这个答案中提到Winista和URLMon都无法正确检测swf或flv。这就是为什么您使用的 php 组件无法完全识别"video/x-flv"和"video/x-f4v"文件的原因。

Winista 使用一个魔术文件(其中包含 MIME 类型的列表和指示特定文件的起始位的相应十六进制字符)。

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

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

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

为了解决这个问题,我完全放弃了FileInfo,并使用以下函数恢复到旧的,良好的MIME扩展方法:

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;
}

您可以在pastebin.com 找到mimeTypes.php的内容。它是由我通过合并 Apache SVN 的mime.types文件和来自 Yii Framework 的类似mimeTypes.php数组来编译的。结果集在文件扩展名和相应的 MIME 类型之间具有 1000 多个关系。

导入注意:在使用此解决方案之前,您必须仔细考虑,您需要它用于什么目的?基于文件扩展名的 MIME 类型很容易被欺骗,只需更改该扩展名即可。因此,任何与安全相关的代码都应尽可能远离我的解决方案

我只需要它只是为了简单为flowplayer提供正确的MIME类型的视频文件。我假设,如果用户将此类文件的扩展名更改为其他扩展名,那么flowplayer将无法播放该电影。

最新更新