You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP上传MP4视频时finfo检测为video/3gpp的原因咨询

MP4后缀视频被finfo检测为video/3gpp的原因

你用以下代码检测视频MIME类型:

$mimeFinfo = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($mimeFinfo, $_FILES['video']["tmp_name"]); 
finfo_close($mimeFinfo);
$mime_type = strtolower($mime_type);   

同时通过pathinfo($_FILES['video']['name'],PATHINFO_EXTENSION);得到文件后缀是mp4,但finfo返回video/3gpp,核心原因在于后缀是人为可修改的标识,而finfo是基于文件内容的编码特征判断MIME类型,具体分这几种情况:

  • 文件后缀被手动修改:原文件本身是3GPP格式(对应.3gp/.3g2后缀),只是被改名为.mp4,finfo读取文件内部的编码特征后,返回真实的MIME类型video/3gpp。
  • MP4容器封装了3GPP编码:MP4是通用容器格式,可兼容多种编码流。如果视频采用3GPP标准的编码(比如H.263视频、AMR音频)封装在MP4容器中,finfo会根据编码特征识别为video/3gpp。
  • finfo数据库版本滞后:旧版本的finfo MIME识别数据库对部分MP4变体的支持不完善,误将带有3GPP特征的MP4文件归类为video/3gpp。

可以用命令行工具验证文件真实编码,比如执行:

ffmpeg -i 你的视频文件.mp4

查看输出中Stream段的编码信息,就能确认文件的实际编码类型。

内容的提问来源于stack exchange,提问作者Mike john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:33:13