从流行的多媒体文件格式中提取有用信息的PHP脚本

安装693×855

家属四十三

暗示者

明星六百二十七

观察者五十一

餐具一百三十四

公开问题十一

V2.0.0β1 2019-05-2216:33 UTC

自述文件

可在HTTP://GETI3.3.SooSurf.G.NETHTTPS://www. gTiD3.ORG

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

GNU GPL:

GNU LGPL:

Mozilla MPL:

GETID3商业许可证:

  • GCL(付款要求)

上述许可证的每个副本都包含在许可证GETID3分布的目录。

如果你想捐献,就有一个链接HTTPS://www. gTiD3.ORG为贝宝捐款。

快速启动

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

A将GETId3()解压到一个目录,然后访问/demos/demo.BROSE.PHP

支持

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

A支持请求和/或错误报告的首选方法是论坛。HTTP://Sput.GETI3.3.Org/

源锻炉通知

强烈建议您注册SooFiFor发布新版本的通知。请访问:HTTP//SurfFurg.NET/Prjuts/StuffFiel.PHP?群组ID=55859然后点击小“监视包”图标/链接。如果您以前已经注册过邮件列表,请注意它已经被中止,只有自动化SooCoFror通知将从现在起使用。

GEITD3()是做什么的?

阅读和分析(不同程度):

  • 标签

    • 猿猴(V1和V2)
    • ID3V1(&ID3V1.1)
    • ID3V2(V2.4,V2.3,V2.2)
    • LyRISS3(V1和V2)
  • 音频损耗:

    • MP3/MP2/MP1
    • MPC/MuxPACK
    • OGG(沃比斯,OggFLAC,斯佩克斯,Opus)
    • AAC/MP4
    • AC3
    • DTS
    • 实时音频
    • 斯佩克斯
    • 决策支持系统
    • VQF
  • 音频无损:

    • 自动增益调节器
    • 博克
    • CD音频(*.CDA)
    • FLAC
    • La(无损音频)
    • 利波
    • LPAC
    • 米迪
    • 猴音
    • 最优青蛙
    • 罗考
    • 缩短
    • 塔塔
    • 挥发性有机化合物
    • WAV(RIFF)
    • 波包
  • 视听:

    • ASF:ASF,Windows媒体音频(WMA),Windows Media Video(WMV)
    • AVI(RIFF)
    • 动画
    • 马托斯卡(MKV)
    • MPEG-1/MPEG-2
    • NulvStand流媒体视频
    • QuiTimeTM(包括MP4)
    • 实时视频
  • 静止图像:

    • 骨形态发生蛋白
    • GIF
    • JPEG
    • PNG
    • 口角
    • SWF(闪存)
    • 照片光盘
  • 数据

    • ISO-9660 CD-ROM图像(目录结构)
    • 有限支撑(SZIP)
    • ZIP(目录结构)
    • 焦油
    • 线索
  • 写作:

    • ID3V1(&ID3V1.1)
    • ID3V2(V2.3&V2.4)
    • 奥格沃比斯的沃比斯评论
    • FLAC上的VBISBISTY(不是OGGFLAC)
    • 猿猴V2
    • LyRISS3(仅删除)

要求

  • PHP4.2.0高达5.2 .x,用于GETID3()1.7 x(更早)
  • PHP5.0.5(或更高)GITID3()1.8 x(及UP)
  • PHP5.0.5(或更高)GITID3()2 x(及UP)
  • 至少4兆字节的PHP内存。高度推荐8MB或以上。所有加载模块都需要12MB。

用法

查看/demo/demo.BasIC.PHP,非常简单地使用GETId3(),不需要花哨的输出,只需扫描一个文件即可。

返回返回的数据结构的结构.txt。

对于一个完整的目录浏览的例子,GETId3()的文件扫描实现,请运行/demo/demo.BROSE.PHP

在一个给定的目录中扫描每一个文件和所有子目录的示例递归扫描代码,参见/demo/demo.Myq.L.PHP,将结果存储在数据库中,并允许各种分析/维护操作。

若要通过HTTP或FTP分析远程文件,则需要在运行GETId3()之前先本地复制文件。你的代码看起来像这样:

<?PHP

/ /本地复制远程文件,用GETID3()扫描
远程文件名 = HTTP://www. ExcPul.COM/FielNeM.MP3
如果$FPY遥控器 = FPEN远程文件名铷铷){
    $LoalTalpFrimeNAME = 坦普南/TMPGETId3
    如果FPL本地 = FPEN$LoalTalpFrimeNAME世界银行){
        虽然美元缓冲区 = 弗雷德$FPY遥控器八千一百九十二){
            写入文件FPL本地美元缓冲区
}
        FSEXFPL本地
        / /初始化GETID3引擎
        $GETId3 =  GETId3
        $此文件信息 = $GETId3>分析($LoalTalpFrimeNAME
        / /删除临时文件
        解锁$LoalTalpFrimeNAME
}
    FSEX$FPY遥控器
}

关于如何编写标签,请参阅/demo/demo.Wrord.PHP。

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

参见结构

建议您查看“/demos/demo.BROSE.PHP”的输出,扫描您感兴趣的文件,以确认在通用的任何特定文件类型中实际返回的数据,特别是您的文件,因为返回的实际数据可能根据文件本身中可用的信息而有很大差异。

笔记

gTiD3())1

如果格式解析器遇到了一个关键问题,它将返回一些东西。$FielFiel[ [错误] ]描述所遇到的错误。如果生成一个不那么重要的错误或通知,它将出现在$FielFiel[ [警告] ]. 这两个键可能包含不止一个警告或错误。如果在[错误]中返回某个内容,则该文件未被正确解析,并且返回的数据可能或可能不正确和/或完成。如果返回某物[警告](而不是)[错误]然后,返回的数据是正常的,通常是GETId3(),因为其他程序中已知的错误,在文件中报告了错误。一些警告可能指示返回的数据是可以的,但是由于文件中的错误,无法提取某些数据。

gTiD3())2

除错误外,请参阅上面的内容(这样您只会得到一个错误)。

免责事项

GETID3()已经在许多系统上被测试,在许多类型的文件中,在许多操作系统下,并且通常被认为是稳定的和安全的。这就是说,仍然存在一个未被发现和/或未修复的bug,可能会破坏您的文件,尤其是在写入函数中。通过使用GETId3()你同意如果你的任何文件都被破坏了,那不是我的错。事实上,我对任何事情都不负责任:

许可证

GNU通用公共许可证

这个程序是免费软件,你可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发它和/或修改它;许可证的第2版,或者(按你的选择)任何以后的版本。

这个程序被分发,希望它是有用的,但是没有任何保证;甚至没有对适销性或适合特定用途的默示保证。详情请参阅GNU通用公共许可证。

你应该已经收到了GNU通用公共许可证的副本,连同这个程序;如果没有,请写信给:自由软件基金会,59庙宇套房- 330波士顿,MA02111-1307,USA.。

常见问题

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

A你一般都可以免费使用GETI3。你需要商业许可证的唯一情况是如果你销售你的集成了GETID3的封闭源程序。如果你出售你的程序,包括一个GETID3的副本,那就很好,只要你在出售它时包含一个源代码副本。或者,你可以在没有GETID3的情况下发布你的代码,并说:“从GETId3.SooCurf.net下载它。”

为什么它被称为“gTiD3-()”,如果它不仅仅是这样的话呢?

V0.1实际上就是这样做的。我没有旧版本的代码,但我今天基本上可以用一行函数编写它:

功能 GETId3文件名{退货 打开A3TAG/A30CET/A30MAST/A30BeSE/A4YA/A28评论/C1RAC/C1GeRIDID子串文件内容文件名-一百二十八);
    

未来计划

HTTPS://www. gTid3.3.Org/PHPBB3/VIEWFUM.PHP?F=7

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

HTTPS://www. gTid3.3.Org/PHPBB3/VIEPTIC.PHP?t=25

  • 不能用VBR视频数据确定MPEG视频的比特率(需要文档)
  • MPEG视频(需要文档)不能确定隔行/逐行扫描
  • MIDI播放时间有时不准确
  • 无法识别AAC-RAW模式文件
  • 无法识别WavePoD原始模式文件
  • MP4文件报告很多“未知的QuiTimeAtom类型”(需要文档)
  • 加密的ASF/WMA/WMV文件警告“未处理的GuID-asffCopeTyPrimeTythObjor对象”
  • 音频和视频之间的比特率分割不能计算为NSV,只计算总比特率。(需要文件)
  • 所有的OGG格式(VRBIS,OggFLAC,Speex)都受到了跨越多个OGG页面的大VoRISBISH的问题的影响,但是只有OGGVRBIS文件可以用VRISBISTY进行处理。
  • Mac OS 102.8(也可能是其他版本)提供的“头”版本只理解一个选项(-n),因此失败。GETID3忽略了这一点,返回错误的Md5x数据。

GETId3()中已知的不能修复的错误/问题

HTTPS://www. gTid3.3.Org/PHPBB3/VIEPTIC.PHP?t=25

  • 32位PHP安装:由于大于32位的PHP文件系统功能的限制,大于2GB的文件不能总是被GETID3()完全解析。注意:由于V1.7.8B3对大于-2GB的文件有部分支持,其中大部分将解析OK,只要没有临界数据位于2GB偏移之外。
    • 64位PHP上的所有文件格式
    • zip(格式不支持文件> 2GB)
    • FLAC(当前编码器不支持文件>2GB)已知将不起作用:
    • ID3V1标签(总是位于文件末尾)
    • LyRISS3标签(总是位于文件末尾)
    • APE标签(总是位于文件末尾)可能会起作用:
    • QuiTimeTo(如果需要的话,元数据将在2GB偏移之前工作,即,如果文件已经被提示/优化用于流)
    • RIFF.WAV(应该工作得很好,但是给出了无法解析所有块的警告)
    • RIFF.AVI(PoalTimes)可能是错误的,它只基于在第一个2GB中的“MOVI”块,应该发出错误来显示游戏时间是不正确的。其他数据应该是正确的,假设数据在整个文件中是恒定的。

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

HTTPS://www. gTid3.3.Org/PHPBB3/VIEPTIC.PHP?t=25

  • Windows媒体播放器(到V11)和iTunes(到V10+)不正确处理ID3VB2.+ BOM编码的ID3V2.3标签(它们假定数据是UTF 16LE + BOM和崩溃(WMP)或输出亚洲字符集(iTunes))。
  • WiNAMP(至少V2.80)不支持ID3V2.4标签,只有ID3V2.3HTTP:/FoUM.WiAMP.COM/StHealRead?PHP?POSITID=387524
  • HeliMU2的一些版本www. HeliUM2.com不要写入ID3V2.4兼容的帧大小,即使标记被标记为ID3V2.4)(由GETID3()检测到)
  • MP3ExtV3.3.17在ID3V2头的末尾放置了一个不兼容的填充字符串。假设在V3.4B21中是固定的,但仅当您手动添加注册表项时才被修复。这一修正尚未得到证实。(由GETID3()检测)
  • CDEX V1.40(由V1.50B7固定)编写不兼容的OGG注释字符串,其格式为“name=值”,但实际上仅写入“值”(由GETID3()检测)
  • OGGEN 0.9RC3将编码文件标记为ABR,不管它实际上是ABR还是VBR。
  • iTunes(版本xv2.0.3)、“v3.0.1”都是有罪的,很可能其他版本也是如此。用ID帧VCOM写ID3V2.3注释标签,它对于ID3V2.3+无效(它是一个ID3V2.2样式的帧名)(用GETID3()检测)
  • MP2EnC不正确地编码单声道CBR MP2文件(半速声和双播放时间)
  • MP2EnC不正确地编码单声道VBR MP2文件(实际上被编码为立体声)
  • TooNead不正确编码单VBR MP2文件(实际上编码为立体声)
  • AcCENC在VBR模式(实际上是ABR)中编码文件,即使CBR是指定的。
  • VBR文件的AAC/ADF-BITRATEYMODE=CBR
  • LAME3.90-3.92在用DLL编码CBR模式时,准备了一个空数据(用于LAME/VBR报头的空间,但从来没有写入)。
  • 前面尼禄用TSIVIQF V1.0和“1”对TWIQQF V1.0和“1”的TSIVIQF(假设为字节的文件化)编码TWIQQF(用GETID3()检测)
  • 前面尼禄编码TWIQQF文件1秒比它们应该短
  • AAC-ADTS文件实际上是编码的VBR,即使CBR模式被指定(编码器上的CBR模式开关启用ABR模式,而不是CBR,但是不可能区分这样的ABR文件和真VBR之间的差异)。
  • OggFLAC的StimaFo.Adioox签名总是空的。之所以这样,是因为在LiBOGGFLAC中还没有寻求支持,所以它无法返回并编写编码后的计算总和。在OGG FLAC中寻求支持是下一版本的第1项。“- Josh Coalson(FLAC开发人员)注释:GETId3()将以类似于其他文件格式的方法计算Md5x数据,但是该值不能与FLAC文件格式中的FLAC数据的M55x数据值进行比较。
  • StruthFo.AdioOx签名不是在FLAC V0.3.0&V.0.4.0GETI3()中计算的,它将以类似于其他文件格式的方法计算Md5x数据,但该值不能与FLAC V0.5.0+的Md5x数据值进行比较。
  • RioPort(包括2和3.11的各种版本)标记ID3v2与没有数据部分的A WCOM帧
  • 较早版本的CooPooR向OGG VRBIS文件添加非法ID3标签,从而使它们损坏。
  • MelaCID3标签写入器V1.3.4(和更老)在追加新ID3v1标签时错误地截断MP3文件中的最后一个字节。
  • 有无NoeEK开关的无损音频文件实际上在内部不同,因此不能匹配Md5x数据。
  • 已知iTunes在ID3v2标签存在时,在现有ID3v1标签的末尾追加新ID3v1标签(由GETId3()检测)。
  • MeaMaMKIKE可以写一个空白的RGAD ID3V2帧,但是在一系列用户定义的TXXX帧中进行实际的重放增益调整(由V1.92检测和处理GITID3)。

参考资料:

www. ID3.ORG现在镜像的材料HTTP://ID3L.SooSurfGe.NET/ID3/