gpt4 book ai didi

PHP finfo 将 m4a 音频检测为视频

转载 作者:搜寻专家 更新时间:2023-10-31 20:46:48 24 4
gpt4 key购买 nike

在 2 个不同的 AMP 服务器(一个 Linux,一个 Windows)上,PHP 的 finfo 函数为 m4a 音频文件返回“video/mp4”的 mime 类型。

$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 分发的“魔法”文件(magicmagic.mime,大多数情况下在 PHP 的目录中),或者是系统的“魔术”文件(由 file command 在 Unix 上使用)。

你也可以像这样要求使用特定的“魔法”文件:

<?php 
$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic.mgc");
?>

您可以更改系统的“魔法”文件或制作您的自定义文件。

standard file signatures用于 MPEG-4 音频和视频的是:

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。

关于PHP finfo 将 m4a 音频检测为视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12272098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com