标签:php
在2个不同的AMP服务器(一个Linux,一个Windows)上,PHP的finfo函数为m4a音频文件返回一个“视频/ mp4”的哑剧类型.
$path = '/path/to/some/audio.m4a';
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $path);
print $mime; // video/mp4
我相信可以使用Apache的mime.types文件来控制它,但是在找到“ audio / mp4”行并添加m4a扩展名之后:
audio/mp4 mp4a m4a
并重新启动Apache,它仍然报告video / mp4.
如何获取finfo来检测.m4a音频文件的正确(音频)MIME类型?
TYIA.
解决方法:
所使用的“魔术”文件与Apache无关.它被用作table of file signatures,并且取决于您的系统,它是随PHP一起分发的“ magic”文件(大多数时间,PHP目录中的magic或magic.mime),或者系统的“ magic”文件(由07001使用)在Unix上).
您还可以要求使用特定的“魔术”文件,如下所示:
$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic.mgc");
?>
您可以更改系统的“魔术”文件,也可以进行自定义.
00 00 00 18 66 74 79 70
33 67 70 35 ....ftyp
3gp5
MP4 MPEG-4 video files
00 00 00 18 66 74 79 70
6D 70 34 32 ... ftyp
mp42
M4V MPEG-4 video/QuickTime file
00 00 00 20 66 74 79 70
4D 34 41 20 ... ftyp
M4A
M4A Apple Lossless Audio Codec file
您可能需要首先检查这些文件是否在您的“魔术”文件中.
据我所知,m4a(音频)和m4v(视频)可能具有相同的mp4签名(由于编码器不正确),因此,您无法始终使用“魔术”文件来区分两者.然后,您可以放一些PHP代码,根据文件扩展名(例如Windows)确定是视频mp4还是音频mp4.
标签:php
来源: https://codeday.me/bug/20191127/2076126.html