为啥 .WMV 文件的 mime 类型为“video/x-ms-asf”而不是“video/x-ms-wmv”?

Posted

技术标签:

【中文标题】为啥 .WMV 文件的 mime 类型为“video/x-ms-asf”而不是“video/x-ms-wmv”?【英文标题】:Why .WMV files have mime type 'video/x-ms-asf' instead of 'video/x-ms-wmv'?为什么 .WMV 文件的 mime 类型为“video/x-ms-asf”而不是“video/x-ms-wmv”? 【发布时间】:2019-05-09 08:57:10 【问题描述】:

我只需要在我正在构建的 Django Web 应用程序中接受 MP4 视频和 WMV 视频。为此,我会在文件到达服务器后检查文件的 MIME 类型。

据我了解,MP4 文件具有“video/mp4”mime 类型,这正是我在我的网络应用程序上收到的内容。问题来自 WMV 文件,根据我发现的每个站点(例如:this 和 that)应该将“video/x-ms-wmv”作为 mime 类型。当我在服务器上获取这些文件并使用 python-magic 检查它们时,我得到 'video/x-ms-asf' 作为它的 mime 类型。

我使用不同的在线转换器将一些 youtube 视频转换为 WMV 视频,但结果始终相同。

所以实际上,我不知道我在这里做错了什么。

    也许我有一个问题,WMV 视频也可以有“video/x-ms-asf”mime 类型,而不仅仅是“video/x-ms-wmv” 也许python-magic 没有正确读取mime 类型,我认为这几乎不会发生。

非常感谢任何帮助。

作为旁注,我使用 python-magic 而不是 django 的 file.content_type,因为第二个不可靠。只需将文件的扩展名更改为错误的扩展名,file.content_type 就会给出扩展名 mime 类型而不是真实的。

【问题讨论】:

【参考方案1】:

video/x-ms-asf 是正确的 MIME 类型,因为它是包含“高级系统格式”系列名称下的音频和视频的 Windows Media 文件的统称。

在“系列”中,纯音频文件 (.wma) 可以使用 audio/x-ms-wma,视频/音频文件 (.wmv) 可以使用 video/x-ms-wmv,但对于针对流式传输优化的内容,通常会引用容器系列而不是 MIME 类型中的文件扩展名。

【讨论】:

【参考方案2】:

如果python-magic 包装了众所周知的libmagic 库,原因在于libmagic 实际上无法确定ASF 文件的内容:https://bugs.astron.com/view.php?id=84

【讨论】:

以上是关于为啥 .WMV 文件的 mime 类型为“video/x-ms-asf”而不是“video/x-ms-wmv”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Urlmon.dll 中的 FindMimeFromData 函数为许多文件类型返回 MIME 类型“application/octet-stream”?

为啥 Urlmon.dll 中的 FindMimeFromData 函数为许多文件类型返回 MIME 类型“application/octet-stream”?

为啥 Urlmon.dll 中的 FindMimeFromData 函数为许多文件类型返回 MIME 类型“application/octet-stream”?

为啥 Urlmon.dll 中的 FindMimeFromData 函数为许多文件类型返回 MIME 类型“application/octet-stream”?

Laravel 5 Mime 验证

为啥 PHP 没有为 json 文件返回正确的 mime?