导航菜单

跳到内容

JamesHeinrich/获取ID3

存储库文件导航

詹姆斯·海因里希的getID3()(信息@getid3.org)

可在http://getid3.sourceforge.nethttps://www.getid3.org

getID3()在多个许可证下发布。您可以从以下许可证中选择,并根据最适合您的项目的许可证条款使用getID3。

GNU GPL:

GNU LGPL:

Mozilla MPL:

getID3商业许可证:

  • gCL公司(不再可用,现有许可证仍然有效)

上述每个许可证的副本都包含在许可证/getID3发行版的目录。

如果你想捐款,有一个链接https://www.getid3.org用于PayPal捐赠。

快速入门

问:如何检查getID3()是否在我的服务器/文件上工作?

答:将getID3()解压缩到一个目录,然后访问/演示/demo.browse.php

支持

问:我有一个问题,或者我发现了一个错误。我该怎么办?

答:支持请求和/或错误报告的首选方法是在http://support.getid3.org/

Sourceforge通知

强烈建议您注册接收来自的通知发布新版本时的Sourceforge。请访问:http://sourceforge.net/project/showfiles.php?group_id=555859并单击“monitor package”小图标/链接。如果你是之前注册了邮件列表,请注意它已经已停止,只有自动Sourceforge通知将从现在起使用。

getID3()做什么?

读取和解析(不同程度):

  • 标签:

    • APE(v1和v2)
    • ID3v1(&ID3v1.1)
    • ID3v2(v2.4、v2.3、v2.2)
    • 歌词3(第1版和第2版)
  • 音频损耗:

    • MP3/MP2/MP1
    • MPC/Musepack博物馆
    • Ogg(Vorbis、OggFLAC、Speex、Opus)
    • AAC/MP4型
    • 空调3
    • 数据传输系统
    • RealAudio(真实音频)
    • Speex公司
    • 决策支持系统
    • VQF公司
  • 无音频:

    • 艾夫
    • 澳大利亚
    • 邦克
    • CD音频(*.cda)
    • FLAC公司
    • LA(无损音频)
    • LiteWave公司
    • LPAC公司
    • MIDI(MIDI)
    • 猴子的音频
    • 最佳FROG
    • RKAU公司
    • 缩短
    • Tom的无损音频Kompressor(TAK)
    • TTA公司
    • 挥发性有机化合物
    • WAV(里夫)
    • WavPack(WavPack)
  • 视听:

    • ASF:ASF、Windows Media音频(WMA)、Windows Media视频(WMV)
    • AVI(RIFF)
    • 闪光
    • 马特罗斯卡(MKV)
    • MPEG-1/MEG-2
    • NSV(Nullsoft流媒体视频)
    • Quicktime(包括MP4)
    • RealVideo(实时视频)
  • 静态图像:

    • BMP公司
    • 全球投资基金
    • JPEG格式
    • 巴布亚新几内亚
    • 畅通节能法
    • SWF(闪存)
    • 照片光盘
  • 数据:

    • ISO-9660 CD-ROM映像(目录结构)
    • SZIP(有限支持)
    • ZIP(目录结构)
    • 焦油
    • CUE公司
  • 写入:

    • ID3v1(&ID3v1.1)
    • ID3v2(v2.3和v2.4)
    • OggVorbis评论
    • FLAC上的VorbisComment(不是OggFLAC)
    • APE第2版
    • 歌词3(仅删除)

要求

  • 适用于getID3()1.7.x(及更早版本)的PHP 4.2.0至5.2.x
  • 用于getID3()1.8.x(及以上版本)的PHP 5.0.5(或更高版本)
  • 用于getID3()2.0.x(及以上版本)的PHP 5.0.5(或更高版本)
  • PHP至少4MB内存。强烈建议使用8MB或更大的内存。加载所有模块时需要12MB。

安装

首选方法是通过作曲家.遵循安装说明书如果您尚未安装composer。

安装composer后,在项目根目录中执行以下命令以安装此库:

作曲家需要james-heinrich/getid3

用法

请参阅/demos/demo.basic.php,了解getID3()在没有漂亮的输出,只扫描一个文件。

有关返回的数据结构,请参阅structure.txt。

有关getID3()的完整目录浏览、文件扫描实现的示例,请运行/demos/demo.browse.php

有关递归扫描代码示例,请参阅/demo/demo.mysql.php扫描给定目录中的每个文件以及所有子目录,存储数据库中的结果,并允许进行各种分析/维护操作

要通过HTTP或FTP分析远程文件,需要复制文件首先在本地运行getID3()。你的代码看起来会有点像这样地:

<?php(电话)

//本地复制远程文件以使用getID3()进行扫描
$远程文件名='http://www.example.com/filename.mp3';如果($fp_远程=fopen(打开)($远程文件名,“rb”)) {$本地模板文件名=临时名称(“/tmp”,'获取ID3');如果($fp_局部=fopen(打开)($本地模板文件名,“wb”)) {虽然($缓冲器=弗雷德($fp_远程,8192)) {fwrite(写入)($fp_局部,$缓冲器);}f关闭($fp_局部);//初始化getID3引擎
        $获取ID3=新的获取ID3;$此文件信息=$获取ID3->分析($本地模板文件名);//删除临时文件取消链接($本地模板文件名);}f关闭($fp_远程);}

有关如何编写标记的信息,请参见/demo/demo.write.php。

返回的数据结构是什么样子的?

请参阅structure.txt

建议您查看/demos/demo.browse.php扫描您感兴趣的文件确认中任何特定文件类型的实际返回数据通常,尤其是您的文件,因为实际返回的数据根据可用信息的不同,可能会有很大差异文件本身。

笔记

获取ID3()1.x:

如果格式解析器遇到严重问题,它将返回里面的东西$fileinfo['error'],描述遇到的错误。如果生成一个不太严重的错误或通知,它将出现在$fileinfo[“警告”]。两个键可能包含多个警告或错误。如果在['error']中返回了某些内容,则文件不是正确解析和返回的数据可能正确,也可能不正确和/或完成。如果有东西退回[“警告”](而不是[‘错误’])则返回的数据正常-通常getID3()正在报告由于中的已知错误而导致的文件错误其他程序。一些警告可能表明返回的是OK,但由于以下原因无法提取某些数据文件中有错误。

获取ID3()2.x:

请参阅上文,但会抛出错误(因此您将只收到一个错误)。

免责声明

getID3()已经在许多系统、许多类型的文件上进行了测试,在许多操作系统下,通常认为是稳定的而且安全。尽管如此,仍有可能出现可能会损坏您的文件,尤其是在写入函数中。通过使用getID3(),您同意如果你的文件被破坏了,那不是我的错。事实上,我不承担任何责任:)

许可证

GNU通用公共许可证-请参阅License.txt

这个程序是自由软件;你可以重新分发它和/或根据GNU通用公共许可证的条款对其进行修改由自由软件基金会出版;任一版本2或(根据您的选择)任何更高版本。

分发此程序是为了希望它会有用,但无任何保证;甚至没有适销性或特定用途的适用性。请参阅GNU通用公共许可证了解更多详细信息。

您应该已经收到GNU通用公共许可证的副本与该计划一起;如果没有,请写信给:自由软件基金会。59 Temple Place-330号套房美国马萨诸塞州波士顿02111-1307。

常见问题解答:

问:我可以在程序中使用getID3()吗?我需要商业执照吗?

答:您通常可以自由使用getID3,但您认为合适。唯一的如果您是销售集成了getID3的封闭源代码程序。如果你出售您的程序,包括getID3的副本,只要因为您在出售源代码时包含了源代码的副本。或者您可以在不使用getID3的情况下发布代码,并说“download it fromgetid3.sourceforge.net“

如果它的功能远远不止于此,为什么它被称为“getID3()”?

v0.1实际上就是这样做的。我没有这么旧的代码,但我现在基本上可以用单行函数编写它:

功能 获取ID3($文件名) {返回打开包装('a3TAG/a30title/a30artist/a30album/a4年/a28comment/c1ctrack/c1genreid',substr(文件获取内容($文件名), -128)); }

未来计划

https://www.getid3.org/phpBB3/viewforum.php?f=7

getID3()中可能最终修复的已知错误/问题

https://www.getid3.org/phpBB3/viewtopic.php?t=25

  • 无法使用VBR视频数据确定MPEG视频的比特率(需要文档)
  • 无法确定MPEG视频的交错/渐进(需要文档)
  • MIDI播放时间有时不准确
  • AAC-RAW模式文件无法识别
  • 无法识别WavPack-RAW模式文件
  • mp4文件报告大量“未知QuickTime原子类型”(需要文档)
  • 加密的ASF/WMA/WMV文件警告“未处理的GUIDASF_内容_加密对象“
  • 无法计算音频和视频之间的比特率分割NSV,仅为总比特率。(需要文档)
  • 所有Ogg格式(Vorbis、OggFLAC、Speex)都受大VorbisComments跨越多个Ogg页面的问题,但但只有OggVorbis文件可以使用vorbiscomment进行处理。
  • Mac OS 10.2.8提供的“head”版本(可能是其他版本versions too)只理解单个选项(-n),并且因此失败了。getID3忽略了这一点,并返回错误的md5_data。

getID3()中无法修复的已知错误/问题

https://www.getid3.org/phpBB3/viewtopic.php?t=25

  • 仅32位PHP安装:getID3()无法始终完全解析大于2GB的文件由于32位PHP文件系统函数的限制。注:由于v1.7.8b3,部分支持大于-2GB文件,只要没有关键文件,大多数文件都会解析为OK数据位于2GB偏移量之外。已知遗嘱:
    • 64位PHP上的所有文件格式
    • ZIP(格式不支持大于2GB的文件)
    • FLAC(当前编码器不支持大于2GB的文件)已知意愿不工作:
    • ID3v1标签(始终位于文件末尾)
    • Lyrics3标签(始终位于文件末尾)
    • APE标签(始终位于文件末尾)可能会生病:
    • Quicktime(如果需要的元数据早于2GB偏移量,这是如果文件已被提示/针对流媒体进行了优化)
    • 里夫。WAV(应该工作正常,但会发出警告能够解析所有块)
    • 即兴演奏。AVI(播放时间可能是错误的,仅基于适合前2GB的“movi”块应该会发出错误显示播放时间不正确。其他数据应主要正确,假设数据在整个文件中保持不变)

其他程序中的已知错误/问题

https://www.getid3.org/phpBB3/viewtopic.php?t=25

  • Windows Media Player(高达11版)和iTunes(高达10+版)都可以使用UTF-16BE+BOM无法正确处理ID3v2.3标签编码(他们假设数据是UTF-16LE+BOM并且崩溃(WMP)或输出亚洲字符集(iTunes)
  • Winamp(至少高达v2.80)不支持ID3v2.4标记,仅ID3v2.3请参见:http://forums.winamp.com/showthread.php?postid=387524
  • 氦2的一些版本(网址:www.helium2.com)不要写ID3v2.4兼容的帧大小,即使标记已标记作为ID3v2.4)(由getID3()检测)
  • MP3ext V3.3.17在末尾放置了不符合要求的填充字符串ID3v2标头的。这在v3.4b21中应该是固定的,但只有手动添加注册表项时。此修复尚未完成已确认。(由getID3()检测)
  • CDex v1.40(由v1.50b7修复)写入不合规的Ogg注释字符串,应该是“NAME=value”格式,但实际上只写“value”(由getID3()检测)
  • Oggenc 0.9-rc3将编码文件标记为ABR,无论它是实际上是ABR或VBR。
  • iTunes(版本“X v2.0.3”、“v3.0.1”)可能是已知有罪的其他版本也是如此)使用帧名“COM”对ID3v2.3+无效(它是一个ID3v2.2-style帧名称)(由getID3()检测)
  • MP2enc无法正确编码单CBR MP2文件(半速声音和双倍播放时间)
  • MP2enc没有正确编码单声道VBR MP2文件(实际上编码为立体声)
  • tooLAME无法正确编码mono VBR MP2文件(实际上编码为立体声)
  • 即使CBR为明确规定
  • AAC/ADIF-比特率模式=vbr文件的cbr
  • LAME 3.90-3.92预加一帧空数据(空格用于在CBR中编码时,LAME/VBR标头,但它从未写入)带有DLL的模式
  • Ahead Nero使用DSIZ值(假设为TwinVQF v1.0的文件大小为“0”,TwinVQ v1.0的为“1”TwinVQF v2.0(通过getID3()检测到)
  • Ahead Nero编码的TwinVQF文件比它们短1秒应该是
  • AAC-ADTS文件实际上总是经过VBR编码的,即使是CBR模式已指定(编码器上的CBR-模式开关启用ABR模式,而不是CBR本身,但无法识别此类ABR文件和真实VBR之间的差异)
  • OggFLAC中的STREAMINFO.audio_signature始终为空。“原因这是因为没有寻求支持libOggFLAC还没有,因此它无法返回并编写计算编码后的总和。在Ogg FLAC寻求支持是#1项用于下一版本。“-Josh Coalson(FLAC开发者)注意:getID3()将使用类似于的方法计算md5_data其他文件格式,但该值不能与来自FLAC文件格式的FLAC数据的md5_data值。
  • FLAC v0.3.0中未计算STREAMINFO.audio_signature&v0.4.0-getID3()将使用类似于的方法计算md5_data其他文件格式,但该值不能与来自FLAC v0.5.0的md5_data值+
  • RioPort(各种版本,包括2.0和3.11)标记ID3v2没有数据部分的WCOM帧
  • Coolplayer的早期版本向Ogg Vorbis添加了非法ID3标记文件,从而使其损坏。
  • Meracl ID3 Tag Writer v1.3.4(及更早版本)错误地截断附加新的ID3v1标记时MP3文件中数据的最后一个字节。(由getID3()检测到)
  • 无损-使用和不使用-noseek开关编码的音频文件确实存在内部差异,因此无法匹配md5data
  • 众所周知,iTunes会在当ID3v2标记也存在时,现有ID3v1标记(由getID3()检测)
  • MediaMonkey可以写入空白RGAD ID3v2帧,但将在一系列用户定义的TXXX帧中重放增益调整(自v1.9.2起由getID3()检测和处理)

参考材料:

网址:www.id3.org材质现在镜像在http://id3lib.sourceforge.net/id3/