从 PHP 中的 m4a 文件中检索 ID3 信息

Posted

技术标签:

【中文标题】从 PHP 中的 m4a 文件中检索 ID3 信息【英文标题】:Retrieve ID3 info from m4a file in PHP 【发布时间】:2012-02-22 14:42:55 【问题描述】:

我编写了一些 php 代码来从 mp3 文件中提取 ID3 标记。下一步是对 .m4a 文件执行相同操作。根据我所做的研究,看起来大多数 m4a 文件不使用 ID3,而是使用“原子”的格式。

是否有任何 PHP 库可以解析这些“原子”?我见过一些 C#/C++ 的,但还没有找到任何 PHP 的。任何其他指南或文档也会很棒。

谢谢

【问题讨论】:

你可以试试getID3()——过去我在这个库中为各种类型的媒体标签取得了巨大的成功。 我忘记提到的一件事是我没有完整的文件。我只有前 X 个字节。 getID3 是否支持部分文件? 我认为它只读取标头中的标签,而且我认为这通常在文件的前 X 个字节中 - 但答案确实是“试试看” 这不适用于 getID3。我已经分叉了该库并将其集成以使用部分数据文件。我有它的工作,但对于一首 8MB 的歌曲,它需要至少 325kb 数据的原子。有没有更好的方法来从 m4a 解析这些数据而无需下载这么多数据?我想让这更有效率。有没有其他库可以更好地处理这个问题,用任何语言,而不需要下载这么多数据? 几年前,我一直在寻找可靠的 mp3 库,但一直没有找到。有很多,但没有 100% 稳定。情况可能会改变,但如果不做我所做的。下载 mp3info (ibiblio.org/mp3info) 的源代码并将您感兴趣的部分重写为 PHP。如果您不想这样做,您可以安装 mp3info 并从您的脚本中调用它以获取所有信息。 【参考方案1】:

不久前我遇到了一个类似的问题并环顾四周。最简单和最有效的方法(在我看来)是使用 exec 命令来获取额外的媒体信息。

我的代码基于 longtailvideo http://www.longtailvideo.com/support/forums/jw-player/setup-issues-and-embedding/9448/how-to-get-video-duration-with-ffmpeg-and-php 上的论坛帖子

<?php
$videofile="/var/video/user_videos/partofvideo.avi";
ob_start();
passthru("/usr/bin/ffmpeg -i \"$videofile\" 2>&1");
$duration = ob_get_contents();
ob_end_clean();

$search='/Duration: (.*?),/';
$duration=preg_match($search, $duration, $matches, PREG_OFFSET_CAPTURE, 3);

echo $matches[1][0]; <-- Duration
?>

此脚本可以处理 ffmpeg 准备处理的任何内容(很多!)我知道上面的示例说明了一个视频文件,但是它也可以处理音频

【讨论】:

【参考方案2】:

这个项目处理许多音频文件格式,包括 AAC(M4A 是 AAC): http://getid3.sourceforge.net/

希望对你有帮助

【讨论】:

谢谢分享链接。

以上是关于从 PHP 中的 m4a 文件中检索 ID3 信息的主要内容,如果未能解决你的问题,请参考以下文章

如何获取特定 URL 中音频文件的 ID3Tags 信息?

抽象id3标签、m4a标签、flac标签之间的转换

寻找用于编辑 AAC 元数据(M4A 文件)的开源库 [关闭]

从文件名中提取并填充 id3 标记信息

php中的mp3 id3tag编码

将 m4a 转换为 aac 并在 Windows 7 上保留元数据