【问题标题】:Retrieve ID3 info from m4a file in PHP从 PHP 中的 m4a 文件中检索 ID3 信息
【发布时间】: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 并从您的脚本中调用它以获取所有信息。

标签: php id3 m4a


【解决方案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/

    希望对你有帮助

    【讨论】:

    • 谢谢分享链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2022-01-08
    • 2020-11-06
    相关资源
    最近更新 更多