1

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

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

4

2 回答 2

1

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

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

我建议您关注为什么没有其他人能够将 flv 检测添加到这个魔术文件中。winista 项目是一个旧的 Java 开源项目的移植。

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

于 2012-12-21T01:54:38.680 回答
0

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

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

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

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

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

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

于 2013-09-11T08:05:52.647 回答