从 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 信息的主要内容,如果未能解决你的问题,请参考以下文章